mirror of
https://github.com/strapi/strapi.git
synced 2025-11-08 22:32:02 +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. !-->
|
<!-- Uncomment the correct contribution type. !-->
|
||||||
|
|
||||||
My PR is a:
|
**My PR is a:**
|
||||||
- [ ] 💥 Breaking change
|
- [ ] 💥 Breaking change
|
||||||
- [ ] 🐛 Bug fix #issueNumber
|
- [ ] 🐛 Bug fix #issueNumber
|
||||||
- [ ] 💅 Enhancement
|
- [ ] 💅 Enhancement
|
||||||
- [ ] 🚀 New feature
|
- [ ] 🚀 New feature
|
||||||
|
|
||||||
Main update on the:
|
**Main update on the:**
|
||||||
- [ ] Admin
|
- [ ] Admin
|
||||||
- [ ] Documentation
|
- [ ] Documentation
|
||||||
- [ ] Framework
|
- [ ] Framework
|
||||||
- [ ] Plugin
|
- [ ] 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. -->
|
<!-- 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/ !-->
|
<!-- ⚠️ 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
|
* NodeJS >= 10.x
|
||||||
* NPM >= 6.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:
|
Database:
|
||||||
* MongoDB >= 3.x
|
* MongoDB >= 3.x
|
||||||
@ -71,8 +71,8 @@ Database:
|
|||||||
npm install strapi@alpha -g
|
npm install strapi@alpha -g
|
||||||
````
|
````
|
||||||
|
|
||||||
**We recommend to use the latest version of Strapi to start your new project**.
|
**We recommend always using 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.
|
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
|
#### 🏗 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
|
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
|
#### 🚀 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
|
## Features
|
||||||
|
|
||||||
- **Modern Admin Panel:**
|
- **Modern Admin Panel:** Elegant, entirely customizable and fully extensible admin panel.
|
||||||
Elegant, entirely customizable and fully extensible admin panel.
|
|
||||||
- **Secure by default:** Reusable policies, CSRF, CORS, P3P, Xframe, XSS, and more.
|
- **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.
|
- **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.
|
- **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:
|
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)
|
- [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)
|
- [GitHub](https://github.com/strapi/strapi)
|
||||||
- [Twitter](https://twitter.com/strapijs)
|
- [Twitter](https://twitter.com/strapijs)
|
||||||
- [Facebook](https://www.facebook.com/Strapi-616063331867161).
|
- [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).
|
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
|
## 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
|
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.
|
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.**
|
**⚠️ If you changed the path to access to the administration, the step #2 is required.**
|
||||||
|
|
||||||
#### #2 - Setup (optional)
|
#### #2 - Setup (optional)
|
||||||
|
|||||||
@ -82,7 +82,7 @@ Requests system can be implemented in custom code sections.
|
|||||||
|
|
||||||
### Extracting requests filters
|
### 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
|
::: note
|
||||||
The returned objects are formatted according to the ORM used by the model.
|
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>_lt`: Lower than.
|
||||||
- `<field>_lte`: Lower than or equal to.
|
- `<field>_lte`: Lower than or equal to.
|
||||||
- `<field>_gt`: Greater than.
|
- `<field>_gt`: Greater than.
|
||||||
- `<field>_gte`: Lower than or equal to.
|
- `<field>_gte`: Greater than or equal to.
|
||||||
- `<field>_contains`: Contains.
|
- `<field>_contains`: Contains.
|
||||||
- `<field>_containss`: Contains sensitive.
|
- `<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.
|
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_
|
- `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_
|
- `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
|
## 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.
|
- `required` (boolean) — if true adds a required validator for this property.
|
||||||
- `unique` (boolean) — whether to define a unique index on 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.
|
- `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.
|
- `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": {
|
"age": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"min": 18,
|
"min": 18,
|
||||||
"max": 99
|
"max": 99,
|
||||||
|
"index": true
|
||||||
},
|
},
|
||||||
"birthday": {
|
"birthday": {
|
||||||
"type": "date"
|
"type": "date"
|
||||||
|
|||||||
@ -63,10 +63,10 @@ Do the same thing for other environments.
|
|||||||
|
|
||||||
#### HTTP call
|
#### 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`:
|
Edit `api/yourContentType/models/YourContentType.js`:
|
||||||
@ -76,7 +76,7 @@ Edit `api/yourContentType/models/YourContentType.js`:
|
|||||||
```js
|
```js
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const request = require('request');
|
const axios = require('axios');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lifecycle callbacks for the `Post` model.
|
* 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).
|
- `delete` action of `plugins/content-manager/services/ContentManager.js` (triggered by the Content Manager).
|
||||||
|
|
||||||
::: note
|
::: 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.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.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.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.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.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 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.
|
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
|
## 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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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 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.
|
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 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.
|
Then, delete your old `plugins` folder and replace it by the new one.
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"assert": "~1.3.0",
|
"assert": "~1.3.0",
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import React from 'react';
|
|||||||
import { defineMessages, FormattedMessage } from 'react-intl';
|
import { defineMessages, FormattedMessage } from 'react-intl';
|
||||||
import { PropTypes } from 'prop-types';
|
import { PropTypes } from 'prop-types';
|
||||||
|
|
||||||
|
import LeftMenuLink from 'components/LeftMenuLink';
|
||||||
|
|
||||||
import styles from './styles.scss';
|
import styles from './styles.scss';
|
||||||
import messages from './messages.json';
|
import messages from './messages.json';
|
||||||
defineMessages(messages);
|
defineMessages(messages);
|
||||||
@ -15,8 +17,22 @@ defineMessages(messages);
|
|||||||
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
|
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
|
||||||
return (
|
return (
|
||||||
<div className={styles.leftMenuFooter}>
|
<div className={styles.leftMenuFooter}>
|
||||||
<FormattedMessage {...messages.poweredBy} />
|
<ul className={styles.list}>
|
||||||
<a href={`https://github.com/strapi/strapi/releases/tag/v${version}`} target="_blank">v{version}</a>
|
<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>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
"documentation": {
|
||||||
|
"id": "app.components.LeftMenuFooter.documentation",
|
||||||
|
"defaultMessage": "Documentation"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"id": "app.components.LeftMenuFooter.help",
|
||||||
|
"defaultMessage": "Help"
|
||||||
|
},
|
||||||
"poweredBy": {
|
"poweredBy": {
|
||||||
"id": "app.components.LeftMenuFooter.poweredBy",
|
"id": "app.components.LeftMenuFooter.poweredBy",
|
||||||
"defaultMessage": "Proudly powered by "
|
"defaultMessage": "Proudly powered by "
|
||||||
|
|||||||
@ -4,26 +4,27 @@
|
|||||||
.leftMenuFooter { /* stylelint-disable */
|
.leftMenuFooter { /* stylelint-disable */
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
background: $left-menu-bg;
|
||||||
justify-content: space-between;
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.poweredBy {
|
||||||
|
width: 100%;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
line-height: 3rem;
|
line-height: 3rem;
|
||||||
font-family: 'Lato';
|
|
||||||
background-color: rgba(255, 255, 255, .02);
|
background-color: rgba(255, 255, 255, .02);
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
letter-spacing: 0.05rem;
|
letter-spacing: 0.05rem;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
color: $strapi-gray-light;
|
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>
|
<span className={styles.linkLabel}>{this.props.label}</span>
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
// Icon.
|
||||||
<li className={styles.item}>
|
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
|
<Link
|
||||||
className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
|
className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
|
||||||
to={{
|
to={{
|
||||||
@ -56,9 +70,14 @@ class LeftMenuLink extends React.Component {
|
|||||||
search: this.props.source ? `?source=${this.props.source}` : '',
|
search: this.props.source ? `?source=${this.props.source}` : '',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<i className={`${styles.linkIcon} fa-${this.props.icon} fa`} />
|
{icon}
|
||||||
{content}
|
{content}
|
||||||
</Link>
|
</Link>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<li className={styles.item}>
|
||||||
|
{link}
|
||||||
{plugin}
|
{plugin}
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
.leftMenuLinkContainer { /* stylelint-ignore */
|
.leftMenuLinkContainer { /* stylelint-ignore */
|
||||||
padding-top: .6rem;
|
padding-top: .6rem;
|
||||||
|
padding-bottom: 10.2rem; // LeftMenuFooter height
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 60px;
|
top: 60px;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
import { get } from 'lodash';
|
import { get } from 'lodash';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';
|
import { ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';
|
||||||
@ -40,10 +41,10 @@ class Logout extends React.Component { // eslint-disable-line react/prefer-state
|
|||||||
</DropdownToggle>
|
</DropdownToggle>
|
||||||
<DropdownMenu className={styles.dropDownContent}>
|
<DropdownMenu className={styles.dropDownContent}>
|
||||||
<DropdownItem onClick={this.handleGoTo} className={styles.item}>
|
<DropdownItem onClick={this.handleGoTo} className={styles.item}>
|
||||||
Profile
|
<FormattedMessage id="app.components.Logout.profile" />
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
<DropdownItem onClick={this.handleLogout}>
|
<DropdownItem onClick={this.handleLogout}>
|
||||||
Logout
|
<FormattedMessage id="app.components.Logout.logout" />
|
||||||
<i className="fa fa-sign-out" />
|
<i className="fa fa-sign-out" />
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "قائمة الإضافيات المثبتة في المشروع.",
|
"app.components.ListPluginsPage.description": "قائمة الإضافيات المثبتة في المشروع.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "قائمة الإضافات",
|
"app.components.ListPluginsPage.helmet.title": "قائمة الإضافات",
|
||||||
"app.components.ListPluginsPage.title": "الإضافات",
|
"app.components.ListPluginsPage.title": "الإضافات",
|
||||||
|
"app.components.Logout.profile": "الملف الشخصي",
|
||||||
|
"app.components.Logout.logout": "الخروج",
|
||||||
"app.components.NotFoundPage.back": "العودة للرئيسية",
|
"app.components.NotFoundPage.back": "العودة للرئيسية",
|
||||||
"app.components.NotFoundPage.description": "لا يوجد",
|
"app.components.NotFoundPage.description": "لا يوجد",
|
||||||
"app.components.Official": "الرسمية",
|
"app.components.Official": "الرسمية",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
||||||
"app.components.ListPluginsPage.description": "Liste aller im Projekt installierten Plugins.",
|
"app.components.ListPluginsPage.description": "Liste aller im Projekt installierten Plugins.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Plugins anzeigen",
|
"app.components.ListPluginsPage.helmet.title": "Plugins anzeigen",
|
||||||
|
"app.components.Logout.profile": "Profil",
|
||||||
|
"app.components.Logout.logout": "Ausloggen",
|
||||||
"app.components.ListPluginsPage.title": "Plugins",
|
"app.components.ListPluginsPage.title": "Plugins",
|
||||||
"app.components.NotFoundPage.back": "Zurück zur Homepage",
|
"app.components.NotFoundPage.back": "Zurück zur Homepage",
|
||||||
"app.components.NotFoundPage.description": "Nicht gefunden",
|
"app.components.NotFoundPage.description": "Nicht gefunden",
|
||||||
|
|||||||
@ -65,6 +65,8 @@
|
|||||||
"app.components.InstallPluginPopup.navLink.faq": "faq",
|
"app.components.InstallPluginPopup.navLink.faq": "faq",
|
||||||
"app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
|
"app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
|
||||||
"app.components.InstallPluginPopup.noDescription": "No description available",
|
"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.LeftMenuFooter.poweredBy": "Powered by ",
|
||||||
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
||||||
"app.components.LeftMenuLinkContainer.general": "General",
|
"app.components.LeftMenuLinkContainer.general": "General",
|
||||||
@ -75,6 +77,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "List of the installed plugins in the project.",
|
"app.components.ListPluginsPage.description": "List of the installed plugins in the project.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "List plugins",
|
"app.components.ListPluginsPage.helmet.title": "List plugins",
|
||||||
"app.components.ListPluginsPage.title": "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.back": "Back to homepage",
|
||||||
"app.components.NotFoundPage.description": "Not Found",
|
"app.components.NotFoundPage.description": "Not Found",
|
||||||
"app.components.Official": "Official",
|
"app.components.Official": "Official",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lista de los plugins instalados en el proyecto.",
|
"app.components.ListPluginsPage.description": "Lista de los plugins instalados en el proyecto.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Lista de plugins",
|
"app.components.ListPluginsPage.helmet.title": "Lista de plugins",
|
||||||
"app.components.ListPluginsPage.title": "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.back": "Volver a la página de inicio",
|
||||||
"app.components.NotFoundPage.description": "No encontrado",
|
"app.components.NotFoundPage.description": "No encontrado",
|
||||||
"app.components.Official": "Oficial",
|
"app.components.Official": "Oficial",
|
||||||
|
|||||||
@ -66,6 +66,8 @@
|
|||||||
"app.components.InstallPluginPopup.navLink.faq": "FAQ",
|
"app.components.InstallPluginPopup.navLink.faq": "FAQ",
|
||||||
"app.components.InstallPluginPopup.navLink.screenshots": "Captures d'écran",
|
"app.components.InstallPluginPopup.navLink.screenshots": "Captures d'écran",
|
||||||
"app.components.InstallPluginPopup.noDescription": "Aucune description disponible",
|
"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.LeftMenuFooter.poweredBy": "Propulsé par ",
|
||||||
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
|
||||||
"app.components.LeftMenuLinkContainer.general": "Général",
|
"app.components.LeftMenuLinkContainer.general": "Général",
|
||||||
@ -75,6 +77,8 @@
|
|||||||
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
"app.components.LeftMenuLinkContainer.plugins": "Plugins",
|
||||||
"app.components.ListPluginsPage.description": "Liste des plugins installés dans le projet.",
|
"app.components.ListPluginsPage.description": "Liste des plugins installés dans le projet.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "List plugins",
|
"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.ListPluginsPage.title": "Plugins",
|
||||||
"app.components.NotFoundPage.back": "Retourner à la page d'accueil",
|
"app.components.NotFoundPage.back": "Retourner à la page d'accueil",
|
||||||
"app.components.NotFoundPage.description": "Page introuvable",
|
"app.components.NotFoundPage.description": "Page introuvable",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lista dei plugin installati nel progetto.",
|
"app.components.ListPluginsPage.description": "Lista dei plugin installati nel progetto.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Lista plugin",
|
"app.components.ListPluginsPage.helmet.title": "Lista plugin",
|
||||||
"app.components.ListPluginsPage.title": "Plugins",
|
"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.back": "Torna alla home",
|
||||||
"app.components.NotFoundPage.description": "Non trovato",
|
"app.components.NotFoundPage.description": "Non trovato",
|
||||||
"app.components.Official": "Ufficiale",
|
"app.components.Official": "Ufficiale",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "このプロジェクトでインストールされたプラグイン一覧",
|
"app.components.ListPluginsPage.description": "このプロジェクトでインストールされたプラグイン一覧",
|
||||||
"app.components.ListPluginsPage.helmet.title": "プラグイン一覧",
|
"app.components.ListPluginsPage.helmet.title": "プラグイン一覧",
|
||||||
"app.components.ListPluginsPage.title": "プラグイン",
|
"app.components.ListPluginsPage.title": "プラグイン",
|
||||||
|
"app.components.Logout.profile": "プロフィール",
|
||||||
|
"app.components.Logout.logout": "ログアウト",
|
||||||
"app.components.NotFoundPage.back": "ホームページに戻る",
|
"app.components.NotFoundPage.back": "ホームページに戻る",
|
||||||
"app.components.NotFoundPage.description": "見つかりません",
|
"app.components.NotFoundPage.description": "見つかりません",
|
||||||
"app.components.Official": "オフィシャル",
|
"app.components.Official": "オフィシャル",
|
||||||
|
|||||||
@ -74,6 +74,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "이 프로젝트에 설치된 플러그인 목록입니다.",
|
"app.components.ListPluginsPage.description": "이 프로젝트에 설치된 플러그인 목록입니다.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "플러그인 목록",
|
"app.components.ListPluginsPage.helmet.title": "플러그인 목록",
|
||||||
"app.components.ListPluginsPage.title": "플러그인",
|
"app.components.ListPluginsPage.title": "플러그인",
|
||||||
|
"app.components.Logout.profile": "옆모습",
|
||||||
|
"app.components.Logout.logout": "로그 아웃",
|
||||||
"app.components.NotFoundPage.back": "홈으로 돌아가기",
|
"app.components.NotFoundPage.back": "홈으로 돌아가기",
|
||||||
"app.components.NotFoundPage.description": "찾을 수 없는 페이지입니다.",
|
"app.components.NotFoundPage.description": "찾을 수 없는 페이지입니다.",
|
||||||
"app.components.Official": "공식",
|
"app.components.Official": "공식",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lijst van alle plugins voor dit project",
|
"app.components.ListPluginsPage.description": "Lijst van alle plugins voor dit project",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Alle extensies",
|
"app.components.ListPluginsPage.helmet.title": "Alle extensies",
|
||||||
"app.components.ListPluginsPage.title": "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.back": "Terug naar home pagina",
|
||||||
"app.components.NotFoundPage.description": "Niets gevonden",
|
"app.components.NotFoundPage.description": "Niets gevonden",
|
||||||
"app.components.Official": "Officieel",
|
"app.components.Official": "Officieel",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lista zainstalowanych wtyczek w projekcie.",
|
"app.components.ListPluginsPage.description": "Lista zainstalowanych wtyczek w projekcie.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Lista wtyczek",
|
"app.components.ListPluginsPage.helmet.title": "Lista wtyczek",
|
||||||
"app.components.ListPluginsPage.title": "Wtyczki",
|
"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.back": "Powrót do strony głównej",
|
||||||
"app.components.NotFoundPage.description": "Nie znaleziono",
|
"app.components.NotFoundPage.description": "Nie znaleziono",
|
||||||
"app.components.Official": "Oficjalna",
|
"app.components.Official": "Oficjalna",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projeto.",
|
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projeto.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
||||||
"app.components.ListPluginsPage.title": "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.back": "Voltar à página inicial",
|
||||||
"app.components.NotFoundPage.description": "Não encontrado",
|
"app.components.NotFoundPage.description": "Não encontrado",
|
||||||
"app.components.Official": "Oficial",
|
"app.components.Official": "Oficial",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projecto.",
|
"app.components.ListPluginsPage.description": "Lista de extensões instaladas no projecto.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
"app.components.ListPluginsPage.helmet.title": "Lista de extensões",
|
||||||
"app.components.ListPluginsPage.title": "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.back": "Voltar à página inicial",
|
||||||
"app.components.NotFoundPage.description": "Não encontrado",
|
"app.components.NotFoundPage.description": "Não encontrado",
|
||||||
"app.components.Official": "Oficial",
|
"app.components.Official": "Oficial",
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Analytics": "Аналитика",
|
"Analytics": "Аналитика",
|
||||||
"Content Manager": "Редактор контента",
|
"Content Manager": "Редактор контента",
|
||||||
"Content Type Builder": "Конструктор Типов Контента",
|
"Content Type Builder": "Типы Контента",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
"Files Upload": "Загрузка файлов",
|
"Files Upload": "Загрузка файлов",
|
||||||
"HomePage.notification.newsLetter.success": "Успешная подписка на рассылку новостей",
|
"HomePage.notification.newsLetter.success": "Успешная подписка на рассылку новостей",
|
||||||
@ -16,9 +16,9 @@
|
|||||||
"Users": "Пользователи",
|
"Users": "Пользователи",
|
||||||
"Users & Permissions": "Пользователи & Доступы",
|
"Users & Permissions": "Пользователи & Доступы",
|
||||||
"app.components.BlockLink.code": "Примеры кода",
|
"app.components.BlockLink.code": "Примеры кода",
|
||||||
"app.components.BlockLink.code.content": "Обучайтесь на реальных проектах разработанных в сообществе.",
|
"app.components.BlockLink.code.content": "Обучайтесь на реальных проектах, разработанных в сообществе.",
|
||||||
"app.components.BlockLink.documentation": "Прочитать документацию",
|
"app.components.BlockLink.documentation": "Прочитать документацию",
|
||||||
"app.components.BlockLink.documentation.content": "Ознакомтесь с концепциями, документацией и обучающими материалами.",
|
"app.components.BlockLink.documentation.content": "Ознакомьтесь с концепциями, справочниками и обучающими материалами.",
|
||||||
"app.components.Button.cancel": "Отменить",
|
"app.components.Button.cancel": "Отменить",
|
||||||
"app.components.Button.save": "Сохранить",
|
"app.components.Button.save": "Сохранить",
|
||||||
"app.components.ComingSoonPage.comingSoon": "Скоро",
|
"app.components.ComingSoonPage.comingSoon": "Скоро",
|
||||||
@ -27,26 +27,26 @@
|
|||||||
"app.components.DownloadInfo.text": "Это может занять около минуты. Спасибо за ваше терпение.",
|
"app.components.DownloadInfo.text": "Это может занять около минуты. Спасибо за ваше терпение.",
|
||||||
"app.components.EmptyAttributes.title": "Пока нет полей",
|
"app.components.EmptyAttributes.title": "Пока нет полей",
|
||||||
"app.components.HomePage.button.blog": "СМОТРИТЕ БОЛЬШЕ В БЛОГЕ",
|
"app.components.HomePage.button.blog": "СМОТРИТЕ БОЛЬШЕ В БЛОГЕ",
|
||||||
"app.components.HomePage.button.quickStart": "ОЗНАКОМТЕСЬ С РУКОВОДСТВОМ ПО БЫСТРОМУ СТАРТУ",
|
"app.components.HomePage.button.quickStart": "ОЗНАКОМИТЬСЯ С РУКОВОДСТВОМ ПО БЫСТРОМУ СТАРТУ",
|
||||||
"app.components.HomePage.community": "Найти сообщество в интернете",
|
"app.components.HomePage.community": "Найдите сообщество в интернете",
|
||||||
"app.components.HomePage.community.content": "Обсудите с членами команды и разработчиками в разных каналах",
|
"app.components.HomePage.community.content": "Обсуждайте с членами команды и разработчиками в разных каналах",
|
||||||
"app.components.HomePage.create": "Создайте ваш первый Тип Контента",
|
"app.components.HomePage.create": "Создайте ваш первый Тип Контента",
|
||||||
"app.components.HomePage.createBlock.content.first": " ",
|
"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.createBlock.content.tutorial": " руководство.",
|
||||||
"app.components.HomePage.cta": "ПОДТВЕРДИТЬ",
|
"app.components.HomePage.cta": "ПОДПИСАТЬСЯ",
|
||||||
"app.components.HomePage.newsLetter": "Подпишитесь на рассылку, чтобы быть в курсе новостей о Strapi",
|
"app.components.HomePage.newsLetter": "Подпишитесь на нашу рассылку, чтобы быть в курсе новостей Strapi",
|
||||||
"app.components.HomePage.support": "ПОДДЕРЖИТЕ НАС",
|
"app.components.HomePage.support": "ПОДДЕРЖИТЕ НАС",
|
||||||
"app.components.HomePage.support.content": "Купите футболку, это поможет нам продолжать работу над проектом, чтобы предоставить вам наилучшее из возможных решений!",
|
"app.components.HomePage.support.content": "Покупая футболку, вы помогаете нам продолжать работу над проектом и предоставлять вам наилучшее из возможных решений!",
|
||||||
"app.components.HomePage.support.link": "ЗАКАЗАТЬ НАШУ ФУТБОЛКУ СЕЙЧАС",
|
"app.components.HomePage.support.link": "ЗАКАЗАТЬ НАШУ ФУТБОЛКУ СЕЙЧАС",
|
||||||
"app.components.HomePage.welcome": "Добро пожаловать!",
|
"app.components.HomePage.welcome": "Добро пожаловать!",
|
||||||
"app.components.HomePage.welcome.again": "Добро пожаловать",
|
"app.components.HomePage.welcome.again": "Добро пожаловать",
|
||||||
"app.components.HomePage.welcomeBlock.content": "Мы рады, что вы вступили в сообщество. Нам необходима обратная связь для развития проекта, поэтому не стесняйтесь писать нам ",
|
"app.components.HomePage.welcomeBlock.content": "Мы рады, что вы присоединились к сообществу. Нам необходима обратная связь для развития проекта, поэтому не стесняйтесь писать нам в ",
|
||||||
"app.components.HomePage.welcomeBlock.content.again": "Надеемся у вы делаете успехи в вашем проекте... Следите с последними новостями о Strapi. Мы стараемся изо всех сил, чтобы улучшить продукт основываясь на ваших пожеланиях.",
|
"app.components.HomePage.welcomeBlock.content.again": "Надеемся, что вы делаете успехи в вашем проекте... Следите за последними новостями Strapi. Мы стараемся изо всех сил, чтобы улучшить продукт, основываясь на ваших пожеланиях.",
|
||||||
"app.components.HomePage.welcomeBlock.content.issues": "проблема.",
|
"app.components.HomePage.welcomeBlock.content.issues": "проблемах.",
|
||||||
"app.components.HomePage.welcomeBlock.content.raise": " или поднять ",
|
"app.components.HomePage.welcomeBlock.content.raise": " или сообщать о ",
|
||||||
"app.components.ImgPreview.hint": "Перетащите файл в эту область или {browse} для загрузки файла",
|
"app.components.ImgPreview.hint": "Перетащите файл в эту область или {browse} файл для загрузки",
|
||||||
"app.components.ImgPreview.hint.browse": "просмотреть",
|
"app.components.ImgPreview.hint.browse": "выберите",
|
||||||
"app.components.InputFile.newFile": "Добавить новый файл",
|
"app.components.InputFile.newFile": "Добавить новый файл",
|
||||||
"app.components.InputFileDetails.open": "Открыть в новой вкладке",
|
"app.components.InputFileDetails.open": "Открыть в новой вкладке",
|
||||||
"app.components.InputFileDetails.originalName": "Первоначальное название:",
|
"app.components.InputFileDetails.originalName": "Первоначальное название:",
|
||||||
@ -56,7 +56,7 @@
|
|||||||
"app.components.InstallPluginPage.InputSearch.placeholder": "Искать плагин... (ex: authentication)",
|
"app.components.InstallPluginPage.InputSearch.placeholder": "Искать плагин... (ex: authentication)",
|
||||||
"app.components.InstallPluginPage.description": "Расширяйте ваше приложение без усилий.",
|
"app.components.InstallPluginPage.description": "Расширяйте ваше приложение без усилий.",
|
||||||
"app.components.InstallPluginPage.helmet": "Магазин - Плагины",
|
"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.InstallPluginPage.title": "Магазин - Плагины",
|
||||||
"app.components.InstallPluginPopup.downloads": "скачать",
|
"app.components.InstallPluginPopup.downloads": "скачать",
|
||||||
"app.components.InstallPluginPopup.navLink.avis": "avis",
|
"app.components.InstallPluginPopup.navLink.avis": "avis",
|
||||||
@ -70,23 +70,25 @@
|
|||||||
"app.components.LeftMenuLinkContainer.general": "Общие",
|
"app.components.LeftMenuLinkContainer.general": "Общие",
|
||||||
"app.components.LeftMenuLinkContainer.installNewPlugin": "Магазин",
|
"app.components.LeftMenuLinkContainer.installNewPlugin": "Магазин",
|
||||||
"app.components.LeftMenuLinkContainer.listPlugins": "Плагины",
|
"app.components.LeftMenuLinkContainer.listPlugins": "Плагины",
|
||||||
"app.components.LeftMenuLinkContainer.noPluginsInstalled": "Нет установленых плагинов",
|
"app.components.LeftMenuLinkContainer.noPluginsInstalled": "Нет установленных плагинов",
|
||||||
"app.components.LeftMenuLinkContainer.plugins": "Плагины",
|
"app.components.LeftMenuLinkContainer.plugins": "Плагины",
|
||||||
"app.components.ListPluginsPage.description": "Список установленых плагинов.",
|
"app.components.ListPluginsPage.description": "Список установленных плагинов.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Список плагинов",
|
"app.components.ListPluginsPage.helmet.title": "Список плагинов",
|
||||||
"app.components.ListPluginsPage.title": "Плагины",
|
"app.components.ListPluginsPage.title": "Плагины",
|
||||||
|
"app.components.Logout.profile": "Профиль",
|
||||||
|
"app.components.Logout.logout": "Выйти",
|
||||||
"app.components.NotFoundPage.back": "Вернуться на главную",
|
"app.components.NotFoundPage.back": "Вернуться на главную",
|
||||||
"app.components.NotFoundPage.description": "Не найдено",
|
"app.components.NotFoundPage.description": "Не найдено",
|
||||||
"app.components.Official": "Официальный",
|
"app.components.Official": "Официальный",
|
||||||
"app.components.PluginCard.Button.label.download": "Скачать",
|
"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.Button.label.support": "Поддержать нас",
|
||||||
"app.components.PluginCard.compatible": "Совместимо с вашим приложением",
|
"app.components.PluginCard.compatible": "Совместимо с вашим приложением",
|
||||||
"app.components.PluginCard.compatibleCommunity": "Совместимо с сообществом",
|
"app.components.PluginCard.compatibleCommunity": "Совместимо с сообществом",
|
||||||
"app.components.PluginCard.more-details": "Больше деталей",
|
"app.components.PluginCard.more-details": "Больше деталей",
|
||||||
"app.components.PluginCard.price.free": "Бесплатно",
|
"app.components.PluginCard.price.free": "Бесплатно",
|
||||||
"app.components.listPlugins.button": "Добавить новый плагин",
|
"app.components.listPlugins.button": "Добавить новый плагин",
|
||||||
"app.components.listPlugins.title.none": "Нет установленых плагинов",
|
"app.components.listPlugins.title.none": "Нет установленных плагинов",
|
||||||
"app.components.listPlugins.title.plural": "{number} плагинов установленно",
|
"app.components.listPlugins.title.plural": "{number} плагинов установленно",
|
||||||
"app.components.listPlugins.title.singular": "{number} плагин установлен",
|
"app.components.listPlugins.title.singular": "{number} плагин установлен",
|
||||||
"app.components.listPluginsPage.deletePlugin.error": "Возникла ошибка при установке плагина",
|
"app.components.listPluginsPage.deletePlugin.error": "Возникла ошибка при установке плагина",
|
||||||
@ -109,9 +111,9 @@
|
|||||||
"components.Input.error.validation.minLength": "Слишком короткое.",
|
"components.Input.error.validation.minLength": "Слишком короткое.",
|
||||||
"components.Input.error.validation.minSupMax": "Не может быть выше",
|
"components.Input.error.validation.minSupMax": "Не может быть выше",
|
||||||
"components.Input.error.validation.regex": "Не соответствует регулярному выражению.",
|
"components.Input.error.validation.regex": "Не соответствует регулярному выражению.",
|
||||||
"components.Input.error.validation.required": "Необходимое поле для заполнение.",
|
"components.Input.error.validation.required": "Необходимое поле для заполнения.",
|
||||||
"components.ListRow.empty": "Нет данных для отображения.",
|
"components.ListRow.empty": "Нет данных для отображения.",
|
||||||
"components.OverlayBlocker.description": "Вы воспользовались функционалом который требует перезапуска сервера. Пожалуста подождете пока подниметься сервер.",
|
"components.OverlayBlocker.description": "Вы воспользовались функционалом, который требует перезапуска сервера. Пожалуйста, подождете.",
|
||||||
"components.OverlayBlocker.title": "Ожидание перезапуска...",
|
"components.OverlayBlocker.title": "Ожидание перезапуска...",
|
||||||
"components.PageFooter.select": "записей на странице",
|
"components.PageFooter.select": "записей на странице",
|
||||||
"components.ProductionBlocker.description": "Для безопасности мы должны заблокировать его для других вариантов.",
|
"components.ProductionBlocker.description": "Для безопасности мы должны заблокировать его для других вариантов.",
|
||||||
@ -128,12 +130,12 @@
|
|||||||
"components.Wysiwyg.selectOptions.title": "Добавить заголовок",
|
"components.Wysiwyg.selectOptions.title": "Добавить заголовок",
|
||||||
"components.WysiwygBottomControls.charactersIndicators": "букв",
|
"components.WysiwygBottomControls.charactersIndicators": "букв",
|
||||||
"components.WysiwygBottomControls.fullscreen": "Развернуть",
|
"components.WysiwygBottomControls.fullscreen": "Развернуть",
|
||||||
"components.WysiwygBottomControls.uploadFiles": "Перетащите файлы в эту область, добавляйте из буфер обмена или {browse}.",
|
"components.WysiwygBottomControls.uploadFiles": "Перетащите файлы в эту область, вставьте из буфера обмена или {browse}.",
|
||||||
"components.WysiwygBottomControls.uploadFiles.browse": "выделите их",
|
"components.WysiwygBottomControls.uploadFiles.browse": "выделите их",
|
||||||
"components.popUpWarning.button.cancel": "Отменить",
|
"components.popUpWarning.button.cancel": "Отменить",
|
||||||
"components.popUpWarning.button.confirm": "Подтвердить",
|
"components.popUpWarning.button.confirm": "Подтвердить",
|
||||||
"components.popUpWarning.message": "Вы уверены, что хотите удалить это?",
|
"components.popUpWarning.message": "Вы уверены, что хотите удалить это?",
|
||||||
"components.popUpWarning.title": "Пожалуйста подтвердите",
|
"components.popUpWarning.title": "Пожалуйста, подтвердите",
|
||||||
"notification.error": "Произошла ошибка",
|
"notification.error": "Произошла ошибка",
|
||||||
"notification.error.layout": "Не удалось получить макет",
|
"notification.error.layout": "Не удалось получить макет",
|
||||||
"request.error.model.unknown": "Модель данных не существует"
|
"request.error.model.unknown": "Модель данных не существует"
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "Projedeki yüklenen eklentiler.",
|
"app.components.ListPluginsPage.description": "Projedeki yüklenen eklentiler.",
|
||||||
"app.components.ListPluginsPage.helmet.title": "Eklenti Listesi",
|
"app.components.ListPluginsPage.helmet.title": "Eklenti Listesi",
|
||||||
"app.components.ListPluginsPage.title": "Etklentiler",
|
"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.back": "Anasayfaya geri dön",
|
||||||
"app.components.NotFoundPage.description": "Bulunamadı",
|
"app.components.NotFoundPage.description": "Bulunamadı",
|
||||||
"app.components.Official": "Resmi",
|
"app.components.Official": "Resmi",
|
||||||
|
|||||||
@ -72,6 +72,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "项目中已安装的插件列表",
|
"app.components.ListPluginsPage.description": "项目中已安装的插件列表",
|
||||||
"app.components.ListPluginsPage.helmet.title": "插件列表",
|
"app.components.ListPluginsPage.helmet.title": "插件列表",
|
||||||
"app.components.ListPluginsPage.title": "插件",
|
"app.components.ListPluginsPage.title": "插件",
|
||||||
|
"app.components.Logout.profile": "轮廓",
|
||||||
|
"app.components.Logout.logout": "登出",
|
||||||
"app.components.NotFoundPage.back": "返回主页",
|
"app.components.NotFoundPage.back": "返回主页",
|
||||||
"app.components.NotFoundPage.description": "没有找到",
|
"app.components.NotFoundPage.description": "没有找到",
|
||||||
"app.components.Official": "官方",
|
"app.components.Official": "官方",
|
||||||
|
|||||||
@ -75,6 +75,8 @@
|
|||||||
"app.components.ListPluginsPage.description": "這個專案安裝的擴充功能列表",
|
"app.components.ListPluginsPage.description": "這個專案安裝的擴充功能列表",
|
||||||
"app.components.ListPluginsPage.helmet.title": "擴充功能列表",
|
"app.components.ListPluginsPage.helmet.title": "擴充功能列表",
|
||||||
"app.components.ListPluginsPage.title": "擴充功能",
|
"app.components.ListPluginsPage.title": "擴充功能",
|
||||||
|
"app.components.Logout.profile": "輪廓",
|
||||||
|
"app.components.Logout.logout": "登出",
|
||||||
"app.components.NotFoundPage.back": "回到主頁",
|
"app.components.NotFoundPage.back": "回到主頁",
|
||||||
"app.components.NotFoundPage.description": "找不到此頁面",
|
"app.components.NotFoundPage.description": "找不到此頁面",
|
||||||
"app.components.Official": "官方",
|
"app.components.Official": "官方",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-admin",
|
"name": "strapi-admin",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Strapi Admin",
|
"description": "Strapi Admin",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -31,8 +31,8 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"sanitize.css": "^4.1.0",
|
"sanitize.css": "^4.1.0",
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18",
|
"strapi-helper-plugin": "3.0.0-alpha.19",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Strapi",
|
"name": "Strapi",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-admin",
|
"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.",
|
"description": "Generate the default admin panel for a Strapi application.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -15,8 +15,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs-extra": "^4.0.1",
|
"fs-extra": "^4.0.1",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"strapi-admin": "3.0.0-alpha.18",
|
"strapi-admin": "3.0.0-alpha.19",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"email": "hi@strapi.io",
|
"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;
|
return routes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-api",
|
"name": "strapi-generate-api",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate an API for a Strapi application.",
|
"description": "Generate an API for a Strapi application.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -70,35 +70,5 @@ module.exports = {
|
|||||||
|
|
||||||
destroy: async (ctx, next) => {
|
destroy: async (ctx, next) => {
|
||||||
return strapi.services.<%= id %>.remove(ctx.params);
|
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';
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-controller",
|
"name": "strapi-generate-controller",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate a controller for a Strapi API.",
|
"description": "Generate a controller for a Strapi API.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-model",
|
"name": "strapi-generate-model",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate a model for a Strapi API.",
|
"description": "Generate a model for a Strapi API.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": "${process.env.PORT || 1337}",
|
"port": "${process.env.PORT || 1337}",
|
||||||
|
"production": true,
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"enabled": false
|
"enabled": false
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": "${process.env.PORT || 1337}",
|
"port": "${process.env.PORT || 1337}",
|
||||||
|
"production": true,
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"enabled": false
|
"enabled": false
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
// Public node modules.
|
// Public node modules.
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const uuid = require('uuid/v4');
|
|
||||||
const { packageManager } = require('strapi-utils');
|
const { packageManager } = require('strapi-utils');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,7 +72,7 @@ module.exports = scope => {
|
|||||||
}],
|
}],
|
||||||
'strapi': {
|
'strapi': {
|
||||||
'packageManager': pkgManager,
|
'packageManager': pkgManager,
|
||||||
'uuid': uuid()
|
'uuid': scope.uuid
|
||||||
},
|
},
|
||||||
'engines': {
|
'engines': {
|
||||||
"node": ">= 10.0.0",
|
"node": ">= 10.0.0",
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Node.js core.
|
// Node.js core.
|
||||||
const path = require('path');
|
|
||||||
const { exec, execSync } = require('child_process');
|
const { exec, execSync } = require('child_process');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
// Public node modules.
|
// Public node modules.
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
@ -15,6 +15,7 @@ const fs = require('fs-extra');
|
|||||||
const npm = require('enpeem');
|
const npm = require('enpeem');
|
||||||
const ora = require('ora');
|
const ora = require('ora');
|
||||||
const shell = require('shelljs');
|
const shell = require('shelljs');
|
||||||
|
const request = require('request');
|
||||||
|
|
||||||
// Logger.
|
// Logger.
|
||||||
const { packageManager } = require('strapi-utils');
|
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(`The app has been connected to the database ${green('successfully')}!`);
|
||||||
console.log();
|
console.log();
|
||||||
|
|
||||||
|
trackSuccess('didConnectDatabase', scope);
|
||||||
|
|
||||||
console.log('🏗 Application generation:');
|
console.log('🏗 Application generation:');
|
||||||
|
|
||||||
let loader = ora('Copy dashboard').start();
|
let loader = ora('Copy dashboard').start();
|
||||||
@ -193,7 +196,19 @@ module.exports = (scope, cb) => {
|
|||||||
console.log('⚡️ Start application:');
|
console.log('⚡️ Start application:');
|
||||||
console.log(`$ ${green('strapi start')}`);
|
console.log(`$ ${green('strapi start')}`);
|
||||||
|
|
||||||
|
trackSuccess('didCreateProject', scope);
|
||||||
|
|
||||||
cb();
|
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 fs = require('fs-extra');
|
||||||
const inquirer = require('inquirer');
|
const inquirer = require('inquirer');
|
||||||
const shell = require('shelljs');
|
const shell = require('shelljs');
|
||||||
|
const uuid = require('uuid/v4');
|
||||||
|
|
||||||
// Logger.
|
// Logger.
|
||||||
const { packageManager } = require('strapi-utils');
|
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.
|
// Make changes to the rootPath where the Strapi project will be created.
|
||||||
scope.rootPath = path.resolve(process.cwd(), scope.name || '');
|
scope.rootPath = path.resolve(process.cwd(), scope.name || '');
|
||||||
scope.tmpPath = path.resolve(os.tmpdir(), `strapi${ crypto.randomBytes(6).toString('hex') }`);
|
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.
|
// Ensure we aren't going to inadvertently delete any files.
|
||||||
try {
|
try {
|
||||||
@ -190,7 +192,7 @@ module.exports = (scope, cb) => {
|
|||||||
default: _.get(scope.database, 'authenticationDatabase', undefined)
|
default: _.get(scope.database, 'authenticationDatabase', undefined)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
when: !hasDatabaseConfig && scope.client.database === 'mongo',
|
when: !hasDatabaseConfig,
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
name: 'ssl',
|
name: 'ssl',
|
||||||
message: 'Enable SSL connection:',
|
message: 'Enable SSL connection:',
|
||||||
@ -209,7 +211,11 @@ module.exports = (scope, cb) => {
|
|||||||
scope.database.settings.username = answers.username;
|
scope.database.settings.username = answers.username;
|
||||||
scope.database.settings.password = answers.password;
|
scope.database.settings.password = answers.password;
|
||||||
scope.database.options.authenticationDatabase = answers.authenticationDatabase;
|
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();
|
||||||
console.log('⏳ Testing database connection...');
|
console.log('⏳ Testing database connection...');
|
||||||
|
|||||||
@ -66,7 +66,10 @@ module.exports = {
|
|||||||
'public/uploads': {
|
'public/uploads': {
|
||||||
folder: {}
|
folder: {}
|
||||||
},
|
},
|
||||||
|
// Copy gitkeep into uploads directory.
|
||||||
|
'public/uploads/.gitkeep': {
|
||||||
|
copy: 'gitkeep'
|
||||||
|
},
|
||||||
// Empty node_modules directory.
|
// Empty node_modules directory.
|
||||||
'node_modules': {
|
'node_modules': {
|
||||||
folder: {}
|
folder: {}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-new",
|
"name": "strapi-generate-new",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate a new Strapi application.",
|
"description": "Generate a new Strapi application.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -15,11 +15,12 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"enpeem": "^2.2.0",
|
"enpeem": "^2.2.0",
|
||||||
"fs-extra": "^4.0.0",
|
"fs-extra": "^4.0.0",
|
||||||
"inquirer": "^4.0.2",
|
"inquirer": "^6.2.1",
|
||||||
"listr": "^0.14.1",
|
"listr": "^0.14.1",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"ora": "^2.1.0",
|
"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"
|
"uuid": "^3.1.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -80,7 +80,8 @@ $RECYCLE.BIN/
|
|||||||
ssl
|
ssl
|
||||||
.idea
|
.idea
|
||||||
nbproject
|
nbproject
|
||||||
|
public/uploads/*
|
||||||
|
!public/uploads/.gitkeep
|
||||||
|
|
||||||
############################
|
############################
|
||||||
# Node.js
|
# 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",
|
"name": "strapi-generate-plugin",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate an plugin for a Strapi application.",
|
"description": "Generate an plugin for a Strapi application.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-policy",
|
"name": "strapi-generate-policy",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate a policy for a Strapi API.",
|
"description": "Generate a policy for a Strapi API.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate-service",
|
"name": "strapi-generate-service",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Generate a service for a Strapi API.",
|
"description": "Generate a service for a Strapi API.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-generate",
|
"name": "strapi-generate",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Master of ceremonies for the Strapi generators.",
|
"description": "Master of ceremonies for the Strapi generators.",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"fs-extra": "^4.0.0",
|
"fs-extra": "^4.0.0",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"reportback": "^2.0.1",
|
"reportback": "^2.0.1",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Strapi team",
|
"name": "Strapi team",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-helper-plugin",
|
"name": "strapi-helper-plugin",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Helper for Strapi plugins development",
|
"description": "Helper for Strapi plugins development",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10.0.0",
|
"node": ">= 10.0.0",
|
||||||
|
|||||||
@ -89,7 +89,7 @@ module.exports = function(strapi) {
|
|||||||
// Register the final model for Bookshelf.
|
// Register the final model for Bookshelf.
|
||||||
const loadedModel = _.assign({
|
const loadedModel = _.assign({
|
||||||
tableName: definition.collectionName,
|
tableName: definition.collectionName,
|
||||||
hasTimestamps: _.get(definition, 'options.timestamps') === true,
|
hasTimestamps: _.get(definition, 'options.timestamps', false),
|
||||||
idAttribute: _.get(definition, 'options.idAttribute', 'id'),
|
idAttribute: _.get(definition, 'options.idAttribute', 'id'),
|
||||||
associations: [],
|
associations: [],
|
||||||
defaults: Object.keys(definition.attributes).reduce((acc, current) => {
|
defaults: Object.keys(definition.attributes).reduce((acc, current) => {
|
||||||
@ -100,7 +100,14 @@ module.exports = function(strapi) {
|
|||||||
return acc;
|
return acc;
|
||||||
}, {})
|
}, {})
|
||||||
}, definition.options);
|
}, 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'))) {
|
if (_.isString(_.get(connection, 'options.pivot_prefix'))) {
|
||||||
loadedModel.toJSON = function(options = {}) {
|
loadedModel.toJSON = function(options = {}) {
|
||||||
const { shallow = false, omitPivot = false } = 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
|
// Add created_at and updated_at field if timestamp option is true
|
||||||
if (loadedModel.hasTimestamps) {
|
if (loadedModel.hasTimestamps) {
|
||||||
definition.attributes['created_at'] = {
|
definition.attributes[_.isString(loadedModel.hasTimestamps[0]) ? loadedModel.hasTimestamps[0] : 'created_at'] = {
|
||||||
type: 'timestamp'
|
type: 'timestamp'
|
||||||
};
|
};
|
||||||
definition.attributes['updated_at'] = {
|
definition.attributes[_.isString(loadedModel.hasTimestamps[1]) ? loadedModel.hasTimestamps[1] : 'updated_at'] = {
|
||||||
type: 'timestampUpdate'
|
type: 'timestampUpdate'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -701,8 +708,8 @@ module.exports = function(strapi) {
|
|||||||
|
|
||||||
// Remove from attributes (auto handled by bookshlef and not displayed on ctb)
|
// Remove from attributes (auto handled by bookshlef and not displayed on ctb)
|
||||||
if (loadedModel.hasTimestamps) {
|
if (loadedModel.hasTimestamps) {
|
||||||
delete definition.attributes['created_at'];
|
delete definition.attributes[_.isString(loadedModel.hasTimestamps[0]) ? loadedModel.hasTimestamps[0] : 'created_at'];
|
||||||
delete definition.attributes['updated_at'];
|
delete definition.attributes[_.isString(loadedModel.hasTimestamps[1]) ? loadedModel.hasTimestamps[1] : 'updated_at'];
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-hook-bookshelf",
|
"name": "strapi-hook-bookshelf",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Bookshelf hook for the Strapi framework",
|
"description": "Bookshelf hook for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -17,12 +17,12 @@
|
|||||||
"main": "./lib",
|
"main": "./lib",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bookshelf": "^0.12.1",
|
"bookshelf": "^0.12.1",
|
||||||
"inquirer": "^5.2.0",
|
"inquirer": "^6.2.1",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"pluralize": "^6.0.0",
|
"pluralize": "^6.0.0",
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"strapi-hook-knex": "3.0.0-alpha.18",
|
"strapi-hook-knex": "3.0.0-alpha.19",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-hook-ejs",
|
"name": "strapi-hook-ejs",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "EJS hook for the Strapi framework",
|
"description": "EJS hook for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-hook-knex",
|
"name": "strapi-hook-knex",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Knex hook for the Strapi framework",
|
"description": "Knex hook for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"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.set('minimize', _.get(definition, 'options.minimize', false) === true);
|
||||||
|
|
||||||
collection.schema.options.toObject = collection.schema.options.toJSON = {
|
collection.schema.options.toObject = collection.schema.options.toJSON = {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-hook-mongoose",
|
"name": "strapi-hook-mongoose",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Mongoose hook for the Strapi framework",
|
"description": "Mongoose hook for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -20,7 +20,7 @@
|
|||||||
"mongoose-float": "^1.0.3",
|
"mongoose-float": "^1.0.3",
|
||||||
"pluralize": "^6.0.0",
|
"pluralize": "^6.0.0",
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"email": "hi@strapi.io",
|
"email": "hi@strapi.io",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-hook-redis",
|
"name": "strapi-hook-redis",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Redis hook for the Strapi framework",
|
"description": "Redis hook for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"rimraf": "^2.6.2",
|
"rimraf": "^2.6.2",
|
||||||
"stack-trace": "0.0.10",
|
"stack-trace": "0.0.10",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"email": "hi@strapi.io",
|
"email": "hi@strapi.io",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-lint",
|
"name": "strapi-lint",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Strapi eslint and prettier configurations",
|
"description": "Strapi eslint and prettier configurations",
|
||||||
"directories": {
|
"directories": {
|
||||||
"lib": "lib"
|
"lib": "lib"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-middleware-views",
|
"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",
|
"description": "Views middleware to enable server-side rendering for the Strapi framework",
|
||||||
"homepage": "http://strapi.io",
|
"homepage": "http://strapi.io",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@ -77,15 +77,10 @@ export function* submit() {
|
|||||||
let shouldAddTranslationSuffix = false;
|
let shouldAddTranslationSuffix = false;
|
||||||
|
|
||||||
// Remove the updated_at & created_at fields so it is updated correctly when using Postgres or MySQL db
|
// Remove the updated_at & created_at fields so it is updated correctly when using Postgres or MySQL db
|
||||||
if (record.updated_at) {
|
const timestamps = get(schema, ['models', currentModelName, 'options', 'timestamps'], null);
|
||||||
delete record.created_at;
|
if (timestamps) {
|
||||||
delete record.updated_at;
|
delete record[timestamps[0]];
|
||||||
}
|
delete record[timestamps[1]];
|
||||||
|
|
||||||
// Remove the updatedAt & createdAt fields so it is updated correctly when using MongoDB
|
|
||||||
if (record.updatedAt) {
|
|
||||||
delete record.createdAt;
|
|
||||||
delete record.updatedAt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -12,9 +12,9 @@
|
|||||||
"components.FilterOptions.FILTER_TYPES._contains": "содержит",
|
"components.FilterOptions.FILTER_TYPES._contains": "содержит",
|
||||||
"components.FilterOptions.FILTER_TYPES._containss": "содержит (с учетом регистра)",
|
"components.FilterOptions.FILTER_TYPES._containss": "содержит (с учетом регистра)",
|
||||||
"components.FilterOptions.FILTER_TYPES._gt": "больше чем",
|
"components.FilterOptions.FILTER_TYPES._gt": "больше чем",
|
||||||
"components.FilterOptions.FILTER_TYPES._gte": "равно или больше чем",
|
"components.FilterOptions.FILTER_TYPES._gte": "больше или равно",
|
||||||
"components.FilterOptions.FILTER_TYPES._lt": "меньше чем",
|
"components.FilterOptions.FILTER_TYPES._lt": "меньше чем",
|
||||||
"components.FilterOptions.FILTER_TYPES._lte": "меньше или равно чем",
|
"components.FilterOptions.FILTER_TYPES._lte": "меньше или равно",
|
||||||
"components.FilterOptions.FILTER_TYPES._ne": "не равно",
|
"components.FilterOptions.FILTER_TYPES._ne": "не равно",
|
||||||
"components.FilterOptions.button.apply": "Применить",
|
"components.FilterOptions.button.apply": "Применить",
|
||||||
"components.FiltersPickWrapper.PluginHeader.actions.apply": "Применить",
|
"components.FiltersPickWrapper.PluginHeader.actions.apply": "Применить",
|
||||||
@ -26,12 +26,12 @@
|
|||||||
"containers.ListPage.displayedFields": "Отображаемые поля",
|
"containers.ListPage.displayedFields": "Отображаемые поля",
|
||||||
"components.Search.placeholder": "Поиск записей...",
|
"components.Search.placeholder": "Поиск записей...",
|
||||||
"containers.SettingPage.addRelationalField": "Добавить связанное поле",
|
"containers.SettingPage.addRelationalField": "Добавить связанное поле",
|
||||||
"containers.SettingPage.editSettings.description": "Перетащите поля для сборки макета",
|
"containers.SettingPage.editSettings.description": "Перетащите поля, чтобы определить макет",
|
||||||
"containers.SettingPage.editSettings.title": "Правка — Настройки",
|
"containers.SettingPage.editSettings.title": "Редактирование — Настройки",
|
||||||
"containers.SettingPage.relations": "Связанные поля",
|
"containers.SettingPage.relations": "Связанные поля",
|
||||||
"components.TableDelete.delete": "Удалить все",
|
"components.TableDelete.delete": "Удалить все",
|
||||||
"components.TableDelete.entries.plural": "{число} записей выбрано",
|
"components.TableDelete.entries.plural": "Выбрано {number} записей",
|
||||||
"components.TableDelete.entries.singular": "{число} записей выделено",
|
"components.TableDelete.entries.singular": "Выбрана {number} запись",
|
||||||
"components.TableEmpty.withFilters": "Нет {contentType} с примененными фильтрами...",
|
"components.TableEmpty.withFilters": "Нет {contentType} с примененными фильтрами...",
|
||||||
"components.TableEmpty.withSearch": "Нет {contentType} согласно поиску ({search})",
|
"components.TableEmpty.withSearch": "Нет {contentType} согласно поиску ({search})",
|
||||||
"components.TableEmpty.withoutFilter": "Нет {contentType}...",
|
"components.TableEmpty.withoutFilter": "Нет {contentType}...",
|
||||||
@ -43,23 +43,23 @@
|
|||||||
"containers.Home.introduction": "Для того чтобы отредактировать ваши записи используйте соответствующую ссылку в меню слева. У плагина отсутствует полноценная возможность редактировать настройки и он все еще находится в стадии активной разработки.",
|
"containers.Home.introduction": "Для того чтобы отредактировать ваши записи используйте соответствующую ссылку в меню слева. У плагина отсутствует полноценная возможность редактировать настройки и он все еще находится в стадии активной разработки.",
|
||||||
"containers.Home.pluginHeaderDescription": "Manage your entries through a powerful and beautiful interface.",
|
"containers.Home.pluginHeaderDescription": "Manage your entries through a powerful and beautiful interface.",
|
||||||
"containers.Home.pluginHeaderTitle": "Редактор контента",
|
"containers.Home.pluginHeaderTitle": "Редактор контента",
|
||||||
"containers.List.addAnEntry": "Добавить новые {entity}",
|
"containers.List.addAnEntry": "Добавить {entity}",
|
||||||
"containers.List.errorFetchRecords": "Ошибка",
|
"containers.List.errorFetchRecords": "Ошибка",
|
||||||
"containers.List.pluginHeaderDescription": "{label} записей найдено",
|
"containers.List.pluginHeaderDescription": "{label} записей найдено",
|
||||||
"containers.List.pluginHeaderDescription.singular": "{label} запись найдена",
|
"containers.List.pluginHeaderDescription.singular": "{label} запись найдена",
|
||||||
"containers.SettingPage.addField": "Добавить новое поле",
|
"containers.SettingPage.addField": "Добавить новое поле",
|
||||||
"containers.SettingPage.attributes": "Поля атрибутов",
|
"containers.SettingPage.attributes": "Поля атрибутов",
|
||||||
"containers.SettingPage.attributes.description": "Определить порядок атребутов",
|
"containers.SettingPage.attributes.description": "Определить порядок атрибутов",
|
||||||
"containers.SettingPage.listSettings.description": "Указать порядок атрибутов",
|
"containers.SettingPage.listSettings.description": "Настройки списка записей для этого Типа Контента",
|
||||||
"containers.SettingPage.listSettings.title": "Список — Настройки",
|
"containers.SettingPage.listSettings.title": "Список — Настройки",
|
||||||
"containers.SettingPage.pluginHeaderDescription": "Отдельные настройки для этого Типа Данных",
|
"containers.SettingPage.pluginHeaderDescription": "Отдельные настройки для этого Типа Контента",
|
||||||
"containers.SettingsPage.Block.contentType.description": "Настроить отдельные параметры",
|
"containers.SettingsPage.Block.contentType.description": "Настроить отдельные параметры",
|
||||||
"containers.SettingsPage.Block.contentType.title": "Типы данных",
|
"containers.SettingsPage.Block.contentType.title": "Типы Контента",
|
||||||
"containers.SettingsPage.Block.generalSettings.description": "Настройте опции по умолчанию для ваших Типов Данных",
|
"containers.SettingsPage.Block.generalSettings.description": "Настройте опции по умолчанию для ваших Типов Контента",
|
||||||
"containers.SettingsPage.Block.generalSettings.title": "Общее",
|
"containers.SettingsPage.Block.generalSettings.title": "Общее",
|
||||||
"containers.SettingsPage.pluginHeaderDescription": "Настройте параметры по умолчанию для всех Типов Данных",
|
"containers.SettingsPage.pluginHeaderDescription": "Настройте параметры по умолчанию для всех ваших Типов Контента",
|
||||||
"emptyAttributes.button": "Перейти в редактор контента",
|
"emptyAttributes.button": "Перейти в редактор контента",
|
||||||
"emptyAttributes.description": "Добавте новое поле в ваш Тип Данных",
|
"emptyAttributes.description": "Добавьте новое поле в ваш Тип Контента",
|
||||||
"emptyAttributes.title": "Пока нет полей",
|
"emptyAttributes.title": "Пока нет полей",
|
||||||
"error.attribute.key.taken": "Это значение уже существует",
|
"error.attribute.key.taken": "Это значение уже существует",
|
||||||
"error.attribute.sameKeyAndName": "Не может быть одинаковым",
|
"error.attribute.sameKeyAndName": "Не может быть одинаковым",
|
||||||
@ -81,21 +81,21 @@
|
|||||||
"error.validation.minSupMax": "Не может быть выше",
|
"error.validation.minSupMax": "Не может быть выше",
|
||||||
"error.validation.regex": "Значение не соответствует регулярному выражению.",
|
"error.validation.regex": "Значение не соответствует регулярному выражению.",
|
||||||
"error.validation.required": "Обязательное значение.",
|
"error.validation.required": "Обязательное значение.",
|
||||||
"form.Input.bulkActions": "Применить массовые действия",
|
"form.Input.bulkActions": "Включить массовые действия",
|
||||||
"form.Input.defaultSort": "Сортировка по умолчанию",
|
"form.Input.defaultSort": "Сортировка по умолчанию",
|
||||||
"form.Input.description": "Description",
|
"form.Input.description": "Описание",
|
||||||
"form.Input.description.placeholder": "Display name in the profile",
|
"form.Input.description.placeholder": "Имя, отображаемое в профиле",
|
||||||
"form.Input.disabled": "Editable field",
|
"form.Input.disabled": "Редактируемое поле",
|
||||||
"form.Input.filters": "Применить фильтры",
|
"form.Input.filters": "Включить фильтры",
|
||||||
"form.Input.label": "Метка",
|
"form.Input.label": "Подпись",
|
||||||
"form.Input.label.inputDescription": "Это знчение переопределит метку, в заголовке таблицы",
|
"form.Input.label.inputDescription": "Это значение переопределяет название, отображаемое в заголовке таблицы",
|
||||||
"form.Input.pageEntries": "Записей на страницу",
|
"form.Input.pageEntries": "Записей на странице",
|
||||||
"form.Input.pageEntries.inputDescription": "Заметка: вы можете переопределить это значение на странице настроек Типа Данных",
|
"form.Input.pageEntries.inputDescription": "Примечание: вы можете переопределить это значение в настройках Типа Контента",
|
||||||
"form.Input.placeholder": "Плейсхолдер",
|
"form.Input.placeholder": "Плейсхолдер",
|
||||||
"form.Input.placeholder.placeholder": "Мое значение",
|
"form.Input.placeholder.placeholder": "Мое значение",
|
||||||
"form.Input.search": "Применить поиск",
|
"form.Input.search": "Включить поиск",
|
||||||
"form.Input.search.field": "Применить поиск по этому полю",
|
"form.Input.search.field": "Включить поиск по этому полю",
|
||||||
"form.Input.sort.field": "Применить сортировку по этому полю",
|
"form.Input.sort.field": "Включить сортировку по этому полю",
|
||||||
"notification.error.displayedFields": "Необходимо добавить хотя бы одно поле",
|
"notification.error.displayedFields": "Необходимо добавить хотя бы одно поле",
|
||||||
"notification.error.relationship.fetch": "Возникла ошибка при получении связей.",
|
"notification.error.relationship.fetch": "Возникла ошибка при получении связей.",
|
||||||
"notification.info.SettingPage.disableSort": "У вас должен быть один атрибут с разрешенной сортировкой",
|
"notification.info.SettingPage.disableSort": "У вас должен быть один атрибут с разрешенной сортировкой",
|
||||||
@ -106,8 +106,8 @@
|
|||||||
"popUpWarning.bodyMessage.contentType.delete.all": "Вы уверенны, что хотите удалить эти записи?",
|
"popUpWarning.bodyMessage.contentType.delete.all": "Вы уверенны, что хотите удалить эти записи?",
|
||||||
"popUpWarning.button.cancel": "Отменить",
|
"popUpWarning.button.cancel": "Отменить",
|
||||||
"popUpWarning.button.confirm": "Подтвердить",
|
"popUpWarning.button.confirm": "Подтвердить",
|
||||||
"popUpWarning.title": "Пожалуйста подтвердите",
|
"popUpWarning.title": "Пожалуйста, подтвердите",
|
||||||
"popUpWarning.warning.cancelAllSettings": "Вы уверенны, что хотите отменить ваши модификации?",
|
"popUpWarning.warning.cancelAllSettings": "Вы уверенны, что хотите отменить ваши изменения?",
|
||||||
"popUpWarning.warning.updateAllSettings": "Это изменит все ваши настройки",
|
"popUpWarning.warning.updateAllSettings": "Это изменит все ваши настройки",
|
||||||
"success.record.delete": "Удалено",
|
"success.record.delete": "Удалено",
|
||||||
"success.record.save": "Сохранено"
|
"success.record.save": "Сохранено"
|
||||||
|
|||||||
@ -17,6 +17,7 @@ const pickData = (model) => _.pick(model, [
|
|||||||
'globalId',
|
'globalId',
|
||||||
'globalName',
|
'globalName',
|
||||||
'orm',
|
'orm',
|
||||||
|
'options.timestamps',
|
||||||
'loadedModel',
|
'loadedModel',
|
||||||
'primaryKey',
|
'primaryKey',
|
||||||
'associations'
|
'associations'
|
||||||
@ -84,6 +85,7 @@ module.exports = async cb => {
|
|||||||
pageEntries: 10,
|
pageEntries: 10,
|
||||||
defaultSort: model.primaryKey,
|
defaultSort: model.primaryKey,
|
||||||
sort: 'ASC',
|
sort: 'ASC',
|
||||||
|
options: model.options,
|
||||||
editDisplay: {
|
editDisplay: {
|
||||||
availableFields: {},
|
availableFields: {},
|
||||||
fields: [],
|
fields: [],
|
||||||
@ -330,8 +332,9 @@ module.exports = async cb => {
|
|||||||
// Here we just need to add the data from the current schema Object
|
// Here we just need to add the data from the current schema Object
|
||||||
apisToAdd.map(apiPath => {
|
apisToAdd.map(apiPath => {
|
||||||
const api = _.get(schema.models, 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, 'filters', filters);
|
||||||
_.set(api, 'search', search);
|
_.set(api, 'search', search);
|
||||||
_.set(api, 'bulkActions', bulkActions);
|
_.set(api, 'bulkActions', bulkActions);
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-content-manager",
|
"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.",
|
"description": "A powerful UI to easily manage your data.",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "Content Manager",
|
"name": "Content Manager",
|
||||||
@ -26,7 +26,7 @@
|
|||||||
"draft-js": "^0.10.5",
|
"draft-js": "^0.10.5",
|
||||||
"react-select": "^1.2.1",
|
"react-select": "^1.2.1",
|
||||||
"showdown": "^1.8.6",
|
"showdown": "^1.8.6",
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18"
|
"strapi-helper-plugin": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pluralize": "^7.0.0"
|
"pluralize": "^7.0.0"
|
||||||
|
|||||||
@ -14,8 +14,8 @@
|
|||||||
"attribute.string": "String",
|
"attribute.string": "String",
|
||||||
"attribute.text": "Text",
|
"attribute.text": "Text",
|
||||||
"button.attributes.add": "Добавить Новое Поле",
|
"button.attributes.add": "Добавить Новое Поле",
|
||||||
"button.contentType.add": "Добавить Тип Данных",
|
"button.contentType.add": "Добавить Тип Контента",
|
||||||
"button.contentType.create": "Создать Тип Данных",
|
"button.contentType.create": "Создать Тип Контента",
|
||||||
"contentType.temporaryDisplay": "(Не сохранено)",
|
"contentType.temporaryDisplay": "(Не сохранено)",
|
||||||
"error.attribute.forbidden": "Такое имя атрибута зарезервировано",
|
"error.attribute.forbidden": "Такое имя атрибута зарезервировано",
|
||||||
"error.attribute.key.taken": "Это значение уже существует",
|
"error.attribute.key.taken": "Это значение уже существует",
|
||||||
@ -29,23 +29,23 @@
|
|||||||
"error.validation.minSupMax": "Не может быть выше",
|
"error.validation.minSupMax": "Не может быть выше",
|
||||||
"error.validation.regex": "Не соответствует регулярному выражению.",
|
"error.validation.regex": "Не соответствует регулярному выражению.",
|
||||||
"error.validation.required": "Это поле является обязательным.",
|
"error.validation.required": "Это поле является обязательным.",
|
||||||
"form.attribute.item.appearance.description": "В противном случае значение будет доступно для редактирования как обычное текстовое поле",
|
"form.attribute.item.appearance.description": "Если отключено, значение будет доступно для редактирования как обычное текстовое поле",
|
||||||
"form.attribute.item.appearance.label": "Показывать WYSIWYG",
|
"form.attribute.item.appearance.label": "Отображать как WYSIWYG",
|
||||||
"form.attribute.item.appearance.name": "Отображение",
|
"form.attribute.item.appearance.name": "Отображение",
|
||||||
"form.attribute.item.boolean.name": "Название",
|
"form.attribute.item.boolean.name": "Название",
|
||||||
"form.attribute.item.customColumnName": "Настраиваемые названия столбца",
|
"form.attribute.item.customColumnName": "Названия столбцов",
|
||||||
"form.attribute.item.customColumnName.description": "Это удобно иметь возможность переименовывать название столбцов для настройки ответов от API.",
|
"form.attribute.item.customColumnName.description": "Может быть полезно переименовать названия столбцов для более читаемых ответов API.",
|
||||||
"form.attribute.item.date.name": "Название",
|
"form.attribute.item.date.name": "Название",
|
||||||
"form.attribute.item.defineRelation.fieldName": "Название поля",
|
"form.attribute.item.defineRelation.fieldName": "Название поля",
|
||||||
"form.attribute.item.enumeration.graphql": "Name override for GraphQL",
|
"form.attribute.item.enumeration.graphql": "Название поля в GraphQL",
|
||||||
"form.attribute.item.enumeration.graphql.description": "Allows you to override the default generated name for GraphQL",
|
"form.attribute.item.enumeration.graphql.description": "Позволяет переопределить название поля в GraphQL, сгенерированное по умолчанию",
|
||||||
"form.attribute.item.enumeration.name": "Название",
|
"form.attribute.item.enumeration.name": "Название",
|
||||||
"form.attribute.item.enumeration.placeholder": "Например: morning,noon,evening",
|
"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.json.name": "Название",
|
||||||
"form.attribute.item.maximum": "Максимальное значение",
|
"form.attribute.item.maximum": "Максимальное значение",
|
||||||
"form.attribute.item.maximumLength": "Максимальная длина",
|
"form.attribute.item.maximumLength": "Максимальная длина",
|
||||||
"form.attribute.item.media.multiple": "Возможно несколько файлов",
|
"form.attribute.item.media.multiple": "Разрешить несколько файлов",
|
||||||
"form.attribute.item.media.name": "Название",
|
"form.attribute.item.media.name": "Название",
|
||||||
"form.attribute.item.minimum": "Минимальное значение",
|
"form.attribute.item.minimum": "Минимальное значение",
|
||||||
"form.attribute.item.minimumLength": "Минимальная длина",
|
"form.attribute.item.minimumLength": "Минимальная длина",
|
||||||
@ -55,56 +55,56 @@
|
|||||||
"form.attribute.item.number.type.float": "float (ex: 3.33333333)",
|
"form.attribute.item.number.type.float": "float (ex: 3.33333333)",
|
||||||
"form.attribute.item.number.type.integer": "integer (ex: 10)",
|
"form.attribute.item.number.type.integer": "integer (ex: 10)",
|
||||||
"form.attribute.item.requiredField": "Обязательное поле",
|
"form.attribute.item.requiredField": "Обязательное поле",
|
||||||
"form.attribute.item.requiredField.description": "Вы не сможете создать запись, если это поле останется пустым",
|
"form.attribute.item.requiredField.description": "Вы не сможете создать запись, если это поле не заполнено",
|
||||||
"form.attribute.item.settings.name": "Настройки",
|
"form.attribute.item.settings.name": "Настройки",
|
||||||
"form.attribute.item.string.name": "Название",
|
"form.attribute.item.string.name": "Название",
|
||||||
"form.attribute.item.textarea.name": "Название",
|
"form.attribute.item.textarea.name": "Название",
|
||||||
"form.attribute.item.uniqueField": "Уникальное поле",
|
"form.attribute.item.uniqueField": "Уникальное поле",
|
||||||
"form.attribute.item.uniqueField.description": "Вы не сможете создать запись, если существует запись с аналогичным содержанием",
|
"form.attribute.item.uniqueField.description": "Вы не сможете создать запись, если уже существует запись с таким значением",
|
||||||
"form.attribute.settings.default": "Стандартное значение",
|
"form.attribute.settings.default": "Стандартное значение",
|
||||||
"form.attribute.settings.default.checkboxLabel": "Установить значение — true",
|
"form.attribute.settings.default.checkboxLabel": "True",
|
||||||
"form.button.cancel": "Отменить",
|
"form.button.cancel": "Отменить",
|
||||||
"form.button.continue": "Продолжить",
|
"form.button.continue": "Продолжить",
|
||||||
"form.button.save": "Сохранить",
|
"form.button.save": "Сохранить",
|
||||||
"form.contentType.item.collectionName": "Название коллекции",
|
"form.contentType.item.collectionName": "Название коллекции",
|
||||||
"form.contentType.item.collectionName.inputDescription": "Полезно, когда название вашего Типа Данных и название вашей таблицы различаются",
|
"form.contentType.item.collectionName.inputDescription": "Полезно, когда название вашего Типа Контента и название вашей таблицы различаются",
|
||||||
"form.contentType.item.connections": "Соединение",
|
"form.contentType.item.connections": "Соединение",
|
||||||
"form.contentType.item.description": "Описание",
|
"form.contentType.item.description": "Описание",
|
||||||
"form.contentType.item.description.placeholder": "Добавьте ваше короткое описание...",
|
"form.contentType.item.description.placeholder": "Добавьте короткое описание...",
|
||||||
"form.contentType.item.name": "Название",
|
"form.contentType.item.name": "Название",
|
||||||
"form.contentType.item.name.description": "Название Типов Данных должны быть уникальными: {link}",
|
"form.contentType.item.name.description": "Название Типа Контента должно быть уникальным: {link}",
|
||||||
"form.contentType.item.name.link.description": "Ознакомьтесь с нашей документацией",
|
"form.contentType.item.name.link.description": "Ознакомьтесь с нашей документацией",
|
||||||
"from": "from",
|
"from": "from",
|
||||||
"home.contentTypeBuilder.description": "Создавайте и обновляйте ваши Типы Данных.",
|
"home.contentTypeBuilder.description": "Создавайте и обновляйте ваши Типы Контента.",
|
||||||
"home.contentTypeBuilder.name": "Типы Данных",
|
"home.contentTypeBuilder.name": "Типы Контента",
|
||||||
"home.emptyAttributes.description": "Добавьте первое поле в ваш новый Тип Данных",
|
"home.emptyAttributes.description": "Добавьте первое поле в ваш новый Тип Контента",
|
||||||
"home.emptyAttributes.title": "Пока ни одного поля не создано",
|
"home.emptyAttributes.title": "Пока ни одного поля не создано",
|
||||||
"home.emptyContentType.description": "Создайте ваш первый Тип Данных и у вас появится возможность загружать ваши данные при помощи API.",
|
"home.emptyContentType.description": "Создайте ваш первый Тип Контента и у вас появится возможность загружать ваши данные при помощи API.",
|
||||||
"home.emptyContentType.title": "Нет Типов Данных",
|
"home.emptyContentType.title": "Нет Типов Контента",
|
||||||
"menu.section.contentTypeBuilder.name.plural": "Типы Данных",
|
"menu.section.contentTypeBuilder.name.plural": "Типы Контента",
|
||||||
"menu.section.contentTypeBuilder.name.singular": "Тип Данных",
|
"menu.section.contentTypeBuilder.name.singular": "Тип Контента",
|
||||||
"menu.section.documentation.guide": "Прочтите больше о Типах Данных в нашем",
|
"menu.section.documentation.guide": "Прочтите больше о Типах Контента в нашем",
|
||||||
"menu.section.documentation.guideLink": "руководстве.",
|
"menu.section.documentation.guideLink": "руководстве.",
|
||||||
"menu.section.documentation.name": "Документация",
|
"menu.section.documentation.name": "Документация",
|
||||||
"menu.section.documentation.tutorial": "Посмотрите наши",
|
"menu.section.documentation.tutorial": "Посмотрите наши",
|
||||||
"menu.section.documentation.tutorialLink": "обучающие видео.",
|
"menu.section.documentation.tutorialLink": "обучающие видео.",
|
||||||
"modelPage.attribute.relationWith": "Связан с",
|
"modelPage.attribute.relationWith": "Связь с",
|
||||||
"modelPage.contentHeader.emptyDescription.description": "Нет описания для этого Типа Данных",
|
"modelPage.contentHeader.emptyDescription.description": "Для этого Типа Контента нет описания",
|
||||||
"modelPage.contentType.list.relationShipTitle.plural": "связи",
|
"modelPage.contentType.list.relationShipTitle.plural": "связей",
|
||||||
"modelPage.contentType.list.relationShipTitle.singular": "связь",
|
"modelPage.contentType.list.relationShipTitle.singular": "связь",
|
||||||
"modelPage.contentType.list.title.including": "включает",
|
"modelPage.contentType.list.title.including": "включая",
|
||||||
"modelPage.contentType.list.title.plural": "поля",
|
"modelPage.contentType.list.title.plural": "полей,",
|
||||||
"modelPage.contentType.list.title.singular": "поле",
|
"modelPage.contentType.list.title.singular": "поле,",
|
||||||
"noTableWarning.description": "Не забудьте создать таблицу `{modelName}` в вашей базе данных",
|
"noTableWarning.description": "Не забудьте создать таблицу `{modelName}` в вашей базе данных",
|
||||||
"noTableWarning.infos": "Больше информации",
|
"noTableWarning.infos": "Больше информации",
|
||||||
"notification.error.message": "Возникла ошибка",
|
"notification.error.message": "Возникла ошибка",
|
||||||
"notification.info.contentType.creating.notSaved": "Пожалуйста сохраните ваш текущий Тип Данных перед тем как создавать новый",
|
"notification.info.contentType.creating.notSaved": "Пожалуйста, сохраните текущий Тип Контента перед тем как создавать новый",
|
||||||
"notification.info.disable": "В данный момент это поле нельзя редактировать...😮",
|
"notification.info.disable": "В данный момент это поле нельзя редактировать...😮",
|
||||||
"notification.info.optimized": "Плагин оптимизирован с вашим localstorage",
|
"notification.info.optimized": "Плагин оптимизирован с вашим localStorage",
|
||||||
"notification.success.contentTypeDeleted": "Ваш Тип Данных удален",
|
"notification.success.contentTypeDeleted": "Ваш Тип Контента удален",
|
||||||
"notification.success.message.contentType.create": "Ваш Тип Данных создан",
|
"notification.success.message.contentType.create": "Ваш Тип Контента создан",
|
||||||
"notification.success.message.contentType.edit": "Ваш Тип Данных обновлен",
|
"notification.success.message.contentType.edit": "Ваш Тип Контента обновлен",
|
||||||
"plugin.description.long": "Моделируйте структуру данных вашего API. Создавайте новые поля и связи всего за минуту. Файлы автоматически создаются и обновляются в вашем проекте.",
|
"plugin.description.long": "Моделируйте структуру данных вашего API. Создавайте новые поля и связи всего за минуту. Файлы в вашем проекте создаются и обновляются автоматически.",
|
||||||
"plugin.description.short": "Моделируйте структуру данных вашего API.",
|
"plugin.description.short": "Моделируйте структуру данных вашего API.",
|
||||||
"popUpForm.attributes.boolean.description": "Да или нет, 1 или 0, true или false",
|
"popUpForm.attributes.boolean.description": "Да или нет, 1 или 0, true или false",
|
||||||
"popUpForm.attributes.boolean.name": "Boolean",
|
"popUpForm.attributes.boolean.name": "Boolean",
|
||||||
@ -114,7 +114,7 @@
|
|||||||
"popUpForm.attributes.email.name": "Email",
|
"popUpForm.attributes.email.name": "Email",
|
||||||
"popUpForm.attributes.enumeration.description": "Список вариантов",
|
"popUpForm.attributes.enumeration.description": "Список вариантов",
|
||||||
"popUpForm.attributes.enumeration.name": "Enumeration",
|
"popUpForm.attributes.enumeration.name": "Enumeration",
|
||||||
"popUpForm.attributes.json.description": "Данные в JSON формате",
|
"popUpForm.attributes.json.description": "Данные в формате JSON",
|
||||||
"popUpForm.attributes.json.name": "JSON",
|
"popUpForm.attributes.json.name": "JSON",
|
||||||
"popUpForm.attributes.media.description": "Картинки, видео, PDF и другие файлы",
|
"popUpForm.attributes.media.description": "Картинки, видео, PDF и другие файлы",
|
||||||
"popUpForm.attributes.media.name": "Media",
|
"popUpForm.attributes.media.name": "Media",
|
||||||
@ -122,24 +122,24 @@
|
|||||||
"popUpForm.attributes.number.name": "Number",
|
"popUpForm.attributes.number.name": "Number",
|
||||||
"popUpForm.attributes.password.description": "Пароль пользователя...",
|
"popUpForm.attributes.password.description": "Пароль пользователя...",
|
||||||
"popUpForm.attributes.password.name": "Password",
|
"popUpForm.attributes.password.name": "Password",
|
||||||
"popUpForm.attributes.relation.description": "Связан с Типом Данных",
|
"popUpForm.attributes.relation.description": "Ссылка на другой Тип Контента",
|
||||||
"popUpForm.attributes.relation.name": "Relation",
|
"popUpForm.attributes.relation.name": "Relation",
|
||||||
"popUpForm.attributes.string.description": "Заголовки, названия, имена, перечень названий",
|
"popUpForm.attributes.string.description": "Заголовки, названия, имена, перечень названий",
|
||||||
"popUpForm.attributes.string.name": "String",
|
"popUpForm.attributes.string.name": "String",
|
||||||
"popUpForm.attributes.text.description": "Описания, текстовые параграфы, статьи",
|
"popUpForm.attributes.text.description": "Описания, параграфы, статьи",
|
||||||
"popUpForm.attributes.text.name": "Text",
|
"popUpForm.attributes.text.name": "Text",
|
||||||
"popUpForm.choose.attributes.header.title": "Добавить новое поле",
|
"popUpForm.choose.attributes.header.title": "Добавить новое поле",
|
||||||
"popUpForm.create": "Добавить новое",
|
"popUpForm.create": "Добавить ",
|
||||||
"popUpForm.create.contentType.header.title": "Добавить новый Тип Данных",
|
"popUpForm.create.contentType.header.title": "Добавить Тип Контента",
|
||||||
"popUpForm.edit": "Отредактировать",
|
"popUpForm.edit": "Отредактировать",
|
||||||
"popUpForm.edit.contentType.header.title": "Отредактировать Тип Данных",
|
"popUpForm.edit.contentType.header.title": "Отредактировать Тип Контента",
|
||||||
"popUpForm.field": "Поле",
|
"popUpForm.field": "Поле",
|
||||||
"popUpForm.navContainer.advanced": "Расширенные настройки",
|
"popUpForm.navContainer.advanced": "Расширенные настройки",
|
||||||
"popUpForm.navContainer.base": "Базовые настройки",
|
"popUpForm.navContainer.base": "Базовые настройки",
|
||||||
"popUpForm.navContainer.relation": "Определить связь",
|
"popUpForm.navContainer.relation": "Определить связь",
|
||||||
"popUpRelation.title": "Связь",
|
"popUpRelation.title": "Связь",
|
||||||
"popUpWarning.bodyMessage.attribute.delete": "Вы уверены, что хотите удалить это поле?",
|
"popUpWarning.bodyMessage.attribute.delete": "Вы уверены, что хотите удалить это поле?",
|
||||||
"popUpWarning.bodyMessage.contentType.delete": "Вы уверены, что хотите удалить этот Тип Данных?",
|
"popUpWarning.bodyMessage.contentType.delete": "Вы уверены, что хотите удалить этот Тип Контента?",
|
||||||
"popUpWarning.button.cancel": "Отменить",
|
"popUpWarning.button.cancel": "Отменить",
|
||||||
"popUpWarning.button.confirm": "Подтвердить",
|
"popUpWarning.button.confirm": "Подтвердить",
|
||||||
"popUpWarning.title": "Пожалуйста подтвердите",
|
"popUpWarning.title": "Пожалуйста подтвердите",
|
||||||
@ -152,6 +152,6 @@
|
|||||||
"table.contentType.head.description": "Описание",
|
"table.contentType.head.description": "Описание",
|
||||||
"table.contentType.head.fields": "Поля",
|
"table.contentType.head.fields": "Поля",
|
||||||
"table.contentType.head.name": "Название",
|
"table.contentType.head.name": "Название",
|
||||||
"table.contentType.title.plural": "Типа Данных доступны",
|
"table.contentType.title.plural": "Типов Контента доступны",
|
||||||
"table.contentType.title.singular": "Тип Данных доступен"
|
"table.contentType.title.singular": "Тип Контента доступен"
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-content-type-builder",
|
"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).",
|
"description": "Strapi plugin to create content type (API).",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "Content Type Builder",
|
"name": "Content Type Builder",
|
||||||
@ -24,11 +24,11 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"immutable": "^3.8.2",
|
"immutable": "^3.8.2",
|
||||||
"pluralize": "^7.0.0",
|
"pluralize": "^7.0.0",
|
||||||
"strapi-generate": "3.0.0-alpha.18",
|
"strapi-generate": "3.0.0-alpha.19",
|
||||||
"strapi-generate-api": "3.0.0-alpha.18"
|
"strapi-generate-api": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18"
|
"strapi-helper-plugin": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Strapi team",
|
"name": "Strapi team",
|
||||||
|
|||||||
@ -1,26 +1,29 @@
|
|||||||
{
|
{
|
||||||
"containers.HomePage.Button.open": "Open the documentation",
|
"containers.HomePage.Button.open": "Открыть документацию",
|
||||||
"containers.HomePage.Button.update": "Update",
|
"containers.HomePage.Button.update": "Обновить",
|
||||||
"containers.HomePage.PluginHeader.title": "Documentation - Settings",
|
"containers.HomePage.copied": "Токен скопирован в буфер обмена",
|
||||||
"containers.HomePage.PluginHeader.description": "Configure the documentation plugin",
|
"containers.HomePage.PluginHeader.title": "Документация - Настройки",
|
||||||
"containers.HomePage.Block.title": "Versions",
|
"containers.HomePage.PluginHeader.description": "Настройте плагин документации",
|
||||||
"containers.HomePage.PopUpWarning.message": "Are you sure you want to delete this version?",
|
"containers.HomePage.Block.title": "Версии",
|
||||||
"containers.HomePage.PopUpWarning.confirm": "I understand",
|
"containers.HomePage.PopUpWarning.message": "Вы уверены что хотите удалить эту версию?",
|
||||||
|
"containers.HomePage.PopUpWarning.confirm": "Я понимаю",
|
||||||
|
|
||||||
"containers.HomePage.form.restrictedAccess": "Restricted access",
|
"containers.HomePage.form.jwtToken": "Получите ваш JWT токен",
|
||||||
"containers.HomePage.form.restrictedAccess.inputDescription": "Make the documentation endpoint private. By default, the access is public",
|
"containers.HomePage.form.jwtToken.description": "Скопируйте этот токен и используйте его в swagger, чтобы делать запросы",
|
||||||
"containers.HomePage.form.password": "Password",
|
"containers.HomePage.form.restrictedAccess": "Закрытый доступ",
|
||||||
"containers.HomePage.form.password.inputDescription": "Set the password to access the documentation",
|
"containers.HomePage.form.restrictedAccess.inputDescription": "Сделайте вашу документацию приватной. По умолчанию доступ открыт",
|
||||||
"containers.HomePage.form.showGeneratedFiles": "Show generated files",
|
"containers.HomePage.form.password": "Пароль",
|
||||||
"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.password.inputDescription": "Установите пароль для доступа к документации",
|
||||||
|
"containers.HomePage.form.showGeneratedFiles": "Показать сгенерированные файлы",
|
||||||
|
"containers.HomePage.form.showGeneratedFiles.inputDescription": "Полезно, если вы хотите изменить сгенерированную документацию. \nПлагин разделяет файлы на модели и плагины. \nПри включенной опции вам будет проще кастомизировать документацию",
|
||||||
|
|
||||||
"components.Row.generatedDate": "Last generation",
|
"components.Row.generatedDate": "Последнее обновление",
|
||||||
"components.Row.open": "Open",
|
"components.Row.open": "Открыть",
|
||||||
"components.Row.regenerate": "Regenerate",
|
"components.Row.regenerate": "Сгенерировать",
|
||||||
|
|
||||||
"error.regenerateDoc": "An error occurred while regenerating the doc",
|
"error.regenerateDoc": "При генерации документации возникла ошибка",
|
||||||
"error.noVersion": "A version is required",
|
"error.noVersion": "Необходимо указать версию",
|
||||||
"error.regenerateDoc.versionMissing": "The version you are trying to generate doesn't exist",
|
"error.regenerateDoc.versionMissing": "Версии, которую вы пытаетесь сгенерировать, не существует",
|
||||||
"error.deleteDoc.versionMissing": "The version you are trying to delete does not exist.",
|
"error.deleteDoc.versionMissing": "Версии, которую вы пытаетесь удалить, не существует.",
|
||||||
"notification.update.success": "Settings updated successfully"
|
"notification.update.success": "Настройки успешно обновлены"
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-documentation",
|
"name": "strapi-plugin-documentation",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "This is the description of the plugin.",
|
"description": "This is the description of the plugin.",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "Documentation",
|
"name": "Documentation",
|
||||||
@ -29,7 +29,7 @@
|
|||||||
"swagger-ui-dist": "^3.18.3-republish2"
|
"swagger-ui-dist": "^3.18.3-republish2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18"
|
"strapi-helper-plugin": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "soupette",
|
"name": "soupette",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"ConfigPage.description": "Настройка плагина email",
|
"ConfigPage.description": "Настройка плагина email",
|
||||||
"ConfigPage.title": "Email - Настройки",
|
"ConfigPage.title": "Email - Настройки",
|
||||||
"EditForm.Input.number.label": "Максимально допустимый размер (в МБ)",
|
"EditForm.Input.number.label": "Максимально допустимый размер (в МБ)",
|
||||||
"EditForm.Input.select.inputDescription": "Письма могут быть отправлены стандартным провайдером (Sendmail), или внешними провайдерами",
|
"EditForm.Input.select.inputDescription": "Письма могут быть отправлены стандартным способом (Sendmail) или с помощью внешних провайдеров",
|
||||||
"EditForm.Input.select.label": "Провайдеры",
|
"EditForm.Input.select.label": "Провайдеры",
|
||||||
"EditForm.Input.toggle.label": "Активировать отправку писем",
|
"EditForm.Input.toggle.label": "Активировать отправку писем",
|
||||||
"notification.config.success": "Настройки успешно обновлены",
|
"notification.config.success": "Настройки успешно обновлены",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-email",
|
"name": "strapi-plugin-email",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "This is the description of the plugin.",
|
"description": "This is the description of the plugin.",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "Email",
|
"name": "Email",
|
||||||
@ -22,11 +22,11 @@
|
|||||||
"prepublishOnly": "IS_MONOREPO=true npm run build"
|
"prepublishOnly": "IS_MONOREPO=true npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"strapi-provider-email-sendmail": "3.0.0-alpha.18"
|
"strapi-provider-email-sendmail": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"react-copy-to-clipboard": "5.0.1",
|
"react-copy-to-clipboard": "5.0.1",
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18"
|
"strapi-helper-plugin": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Strapi team",
|
"name": "Strapi team",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-graphql",
|
"name": "strapi-plugin-graphql",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "This is the description of the plugin.",
|
"description": "This is the description of the plugin.",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "graphql",
|
"name": "graphql",
|
||||||
@ -31,7 +31,7 @@
|
|||||||
"graphql-type-datetime": "^0.2.2",
|
"graphql-type-datetime": "^0.2.2",
|
||||||
"graphql-type-json": "^0.2.1",
|
"graphql-type-json": "^0.2.1",
|
||||||
"pluralize": "^7.0.0",
|
"pluralize": "^7.0.0",
|
||||||
"strapi-utils": "3.0.0-alpha.18"
|
"strapi-utils": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "A Strapi developer",
|
"name": "A Strapi developer",
|
||||||
|
|||||||
@ -266,8 +266,10 @@ module.exports = {
|
|||||||
resolvers,
|
resolvers,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Write schema.
|
if (!strapi.config.currentEnvironment.server.production) {
|
||||||
this.writeGenerateSchema(graphql.printSchema(schema));
|
// Write schema.
|
||||||
|
this.writeGenerateSchema(graphql.printSchema(schema));
|
||||||
|
}
|
||||||
|
|
||||||
// Remove custom scaler (like Upload);
|
// Remove custom scaler (like Upload);
|
||||||
typeDefs = Types.removeCustomScalar(typeDefs, resolvers);
|
typeDefs = Types.removeCustomScalar(typeDefs, resolvers);
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
"form.advanced.item.admin": "URL-адрес панели администратора",
|
"form.advanced.item.admin": "URL-адрес панели администратора",
|
||||||
"form.advanced.item.prefix": "Приставка API",
|
"form.advanced.item.prefix": "Приставка API",
|
||||||
"form.advanced.name": "Расширенные",
|
"form.advanced.name": "Расширенные",
|
||||||
"form.application.description": "Зайдайте настройки вашего приложения.",
|
"form.application.description": "Задайте настройки вашего приложения.",
|
||||||
"form.application.item.description": "Описание",
|
"form.application.item.description": "Описание",
|
||||||
"form.application.item.name": "Название",
|
"form.application.item.name": "Название",
|
||||||
"form.application.item.version": "Версия",
|
"form.application.item.version": "Версия",
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"form.database.item.client": "Клиент",
|
"form.database.item.client": "Клиент",
|
||||||
"form.database.item.connector": "Коннектор",
|
"form.database.item.connector": "Коннектор",
|
||||||
"form.database.item.database": "Базы данных",
|
"form.database.item.database": "Базы данных",
|
||||||
"form.database.item.default": "Задать как стандартное значение",
|
"form.database.item.default": "Сделать подключением по умолчанию",
|
||||||
"form.database.item.host": "Хост",
|
"form.database.item.host": "Хост",
|
||||||
"form.database.item.name": "Название соединения",
|
"form.database.item.name": "Название соединения",
|
||||||
"form.database.item.password": "Пароль",
|
"form.database.item.password": "Пароль",
|
||||||
@ -28,11 +28,11 @@
|
|||||||
"form.database.item.provider.redis": "Redis",
|
"form.database.item.provider.redis": "Redis",
|
||||||
"form.database.item.ssl": "SSL",
|
"form.database.item.ssl": "SSL",
|
||||||
"form.database.item.username": "Имя пользователя",
|
"form.database.item.username": "Имя пользователя",
|
||||||
"form.databases.description": "Настройки базы данных в зависимости от окружения.",
|
"form.databases.description": "Настройки базы данных для разных окружений.",
|
||||||
"form.databases.name": "База данных",
|
"form.databases.name": "База данных",
|
||||||
"form.language.choose": "Выберите язык:",
|
"form.language.choose": "Выберите язык:",
|
||||||
"form.language.description": "Настройте ваш язык.",
|
"form.language.description": "Настройте ваши языки.",
|
||||||
"form.language.name": "Язык",
|
"form.language.name": "Языки",
|
||||||
"form.request.description": "Задайте настройки запроса.",
|
"form.request.description": "Задайте настройки запроса.",
|
||||||
"form.request.item.logger": "Логирование",
|
"form.request.item.logger": "Логирование",
|
||||||
"form.request.item.logger.exposeInContext": "Выводить в контексте",
|
"form.request.item.logger.exposeInContext": "Выводить в контексте",
|
||||||
@ -79,7 +79,7 @@
|
|||||||
"form.server.item.host": "Host",
|
"form.server.item.host": "Host",
|
||||||
"form.server.item.port": "Port",
|
"form.server.item.port": "Port",
|
||||||
"form.server.item.proxy": "Настройки прокси",
|
"form.server.item.proxy": "Настройки прокси",
|
||||||
"form.server.item.proxy.enable": "Прокси включен",
|
"form.server.item.proxy.enable": "Включить прокси",
|
||||||
"form.server.item.proxy.host": "Хост",
|
"form.server.item.proxy.host": "Хост",
|
||||||
"form.server.item.proxy.port": "Порт",
|
"form.server.item.proxy.port": "Порт",
|
||||||
"form.server.item.proxy.ssl": "SSL",
|
"form.server.item.proxy.ssl": "SSL",
|
||||||
@ -579,13 +579,13 @@
|
|||||||
"language.zu": "isiZulu",
|
"language.zu": "isiZulu",
|
||||||
"language.zu_ZA": "isiZulu (iNingizimu Afrika)",
|
"language.zu_ZA": "isiZulu (iNingizimu Afrika)",
|
||||||
"list.databases.button.label": "Добавить новое соединение",
|
"list.databases.button.label": "Добавить новое соединение",
|
||||||
"list.databases.title.plural": "соединения в этом окружении",
|
"list.databases.title.plural": "соединений в этом окружении",
|
||||||
"list.databases.title.singular": "соединение в этом окружении",
|
"list.databases.title.singular": "соединение в этом окружении",
|
||||||
"list.languages.button.label": "Добавить новый языка",
|
"list.languages.button.label": "Добавить новый язык",
|
||||||
"list.languages.default.languages": "Стандартный язык",
|
"list.languages.default.languages": "Язык по умолчанию",
|
||||||
"list.languages.set.languages": "Задать как стандартный",
|
"list.languages.set.languages": "Выбрать по умолчанию",
|
||||||
"list.languages.title.plural": "языка доступны",
|
"list.languages.title.plural": "языков доступно",
|
||||||
"list.languages.title.singular": "языка доступен",
|
"list.languages.title.singular": "язык доступен",
|
||||||
"menu.item.advanced": "Расширенные",
|
"menu.item.advanced": "Расширенные",
|
||||||
"menu.item.application": "Приложение",
|
"menu.item.application": "Приложение",
|
||||||
"menu.item.database": "База данных",
|
"menu.item.database": "База данных",
|
||||||
@ -596,15 +596,15 @@
|
|||||||
"menu.item.server": "Сервер",
|
"menu.item.server": "Сервер",
|
||||||
"menu.section.environments": "Окружения приложения",
|
"menu.section.environments": "Окружения приложения",
|
||||||
"menu.section.global-settings": "Глобальные настройки",
|
"menu.section.global-settings": "Глобальные настройки",
|
||||||
"pageNotFound": "Cтраница не найдена",
|
"pageNotFound": "Страница не найдена",
|
||||||
"plugin.description.long": "Настройте ваш проект в течении считаных секунд.",
|
"plugin.description.long": "Настройте ваш проект в считанные секунды.",
|
||||||
"plugin.description.short": "Настройте ваш проект в течении считаных секунд.",
|
"plugin.description.short": "Настройте ваш проект в считанные секунды.",
|
||||||
"popUpWarning.danger.ok.message": "Я понимаю",
|
"popUpWarning.danger.ok.message": "Я понимаю",
|
||||||
"popUpWarning.databases.danger.message": "Типы Данных все еще подключены этому соединению. Удалив его, возможна критическая ошибка в приложении. Будте осторожны...",
|
"popUpWarning.databases.danger.message": "Типы Контента все еще ссылаются на это соединение. При его удалении в приложении может возникнуть критическая ошибка. Будьте осторожны...",
|
||||||
"popUpWarning.databases.delete.message": "Вы уверены, что хотите удалить эту базу данных?",
|
"popUpWarning.databases.delete.message": "Вы уверены, что хотите удалить эту базу данных?",
|
||||||
"popUpWarning.languages.delete.message": "Вы уверены, что хотите удалить этот язык?",
|
"popUpWarning.languages.delete.message": "Вы уверены, что хотите удалить этот язык?",
|
||||||
"popUpWarning.title": "Пожалуйта подтвердите",
|
"popUpWarning.title": "Пожалуйста, подтвердите",
|
||||||
"request.error.config": "Файл с настройками отсутствует.",
|
"request.error.config": "Файл с настройками не существует.",
|
||||||
"request.error.database.exist": "Это соединение уже существует",
|
"request.error.database.exist": "Это соединение уже существует",
|
||||||
"request.error.database.unknow": "Нет такого соединения",
|
"request.error.database.unknow": "Нет такого соединения",
|
||||||
"request.error.environment.required": "Окружение необходимо.",
|
"request.error.environment.required": "Окружение необходимо.",
|
||||||
@ -625,11 +625,11 @@
|
|||||||
"strapi.notification.error": "Возникла ошибка",
|
"strapi.notification.error": "Возникла ошибка",
|
||||||
"strapi.notification.info.serverRestart": "Сервер будет перезапущен",
|
"strapi.notification.info.serverRestart": "Сервер будет перезапущен",
|
||||||
"strapi.notification.info.settingsEqual": "Значения идентичны",
|
"strapi.notification.info.settingsEqual": "Значения идентичны",
|
||||||
"strapi.notification.success.databaseAdd": "База данных успешно добавлен.",
|
"strapi.notification.success.databaseAdd": "База данных успешно добавлена.",
|
||||||
"strapi.notification.success.databaseDelete": "База данных успешно удалена.",
|
"strapi.notification.success.databaseDelete": "База данных успешно удалена.",
|
||||||
"strapi.notification.success.databaseDeleted": "База данных была удалена.",
|
"strapi.notification.success.databaseDeleted": "База данных была удалена.",
|
||||||
"strapi.notification.success.databaseEdit": "Настройки базы данных успешно обновлены.",
|
"strapi.notification.success.databaseEdit": "Настройки базы данных успешно обновлены.",
|
||||||
"strapi.notification.success.languageAdd": "Язык успешно добавлен.",
|
"strapi.notification.success.languageAdd": "Язык успешно добавлен.",
|
||||||
"strapi.notification.success.languageDelete": "Язык успешно удалена.",
|
"strapi.notification.success.languageDelete": "Язык успешно удален.",
|
||||||
"strapi.notification.success.settingsEdit": "Настройки успешно обновлены."
|
"strapi.notification.success.settingsEdit": "Настройки успешно обновлены."
|
||||||
}
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "strapi-plugin-settings-manager",
|
"name": "strapi-plugin-settings-manager",
|
||||||
"version": "3.0.0-alpha.18",
|
"version": "3.0.0-alpha.19",
|
||||||
"description": "Strapi plugin to manage settings.",
|
"description": "Strapi plugin to manage settings.",
|
||||||
"strapi": {
|
"strapi": {
|
||||||
"name": "Settings Manager",
|
"name": "Settings Manager",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"flag-icon-css": "^2.8.0",
|
"flag-icon-css": "^2.8.0",
|
||||||
"react-select": "^1.0.0-rc.5",
|
"react-select": "^1.0.0-rc.5",
|
||||||
"strapi-helper-plugin": "3.0.0-alpha.18"
|
"strapi-helper-plugin": "3.0.0-alpha.19"
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Strapi team",
|
"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