diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 1464308f38..334a2e31cc 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,18 +1,22 @@ - + + + + + + - - - + + **Informations** -- **Node.js version**: -- **npm version**: -- **Strapi version**: -- **Database**: -- **Operating system**: +- **Node.js version**: +- **npm version**: +- **Strapi version**: +- **Database**: +- **Operating system**: **What is the current behavior?** @@ -28,19 +32,3 @@ **Suggested solutions** - - - - - - - - - - - -**What is the expected behavior?** - - - - \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.md b/.github/ISSUE_TEMPLATE/BUG_REPORT.md index c74ee09797..f6804ba870 100644 --- a/.github/ISSUE_TEMPLATE/BUG_REPORT.md +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.md @@ -5,17 +5,24 @@ about: Create a report to help us improve 🤔. + + + + + + + - - + + **Informations** -- **Node.js version**: -- **npm version**: -- **Strapi version**: -- **Database**: -- **Operating system**: +- **Node.js version**: +- **npm version**: +- **Strapi version**: +- **Database**: +- **Operating system**: **What is the current behavior?** @@ -31,7 +38,3 @@ about: Create a report to help us improve 🤔. **Suggested solutions** - - - - diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md index a5d8b50677..e3c12f501d 100644 --- a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md @@ -5,8 +5,8 @@ about: Suggest an idea for this project 💡! + + **What is the expected behavior?** - - diff --git a/docs/3.x.x/en/configurations/configurations.md b/docs/3.x.x/en/configurations/configurations.md index 3e4ccb8556..d16d15c261 100644 --- a/docs/3.x.x/en/configurations/configurations.md +++ b/docs/3.x.x/en/configurations/configurations.md @@ -246,6 +246,33 @@ Most of the application's configurations are defined by environment. It means th > Please refer to the [dynamic configurations section](#dynamic-configurations) to use global environment variable to configure the databases. +#### MLab Example + +**Path —** `./config/environments/**/database.json`. +```json +{ + "defaultConnection": "default", + "connections": { + "default": { + "connector": "strapi-hook-mongoose", + "settings": { + "client": "mongo", + "host": "ds123456.mlab.com", + "port": 12345, + "database": "mlab_db_name", + "username": "mlab_user_name", + "password": "mlab_pass" + }, + "options": { + "authenticationDatabase": "mlab_db_name", + "ssl": false + } + } + } +} +``` + +> Please note that you must give your MLab database name as the authenticationDatabase and your password can not contain the "@" symbol. diff --git a/docs/3.x.x/en/getting-started/installation.md b/docs/3.x.x/en/getting-started/installation.md index 1ed5fc166d..c782195e92 100644 --- a/docs/3.x.x/en/getting-started/installation.md +++ b/docs/3.x.x/en/getting-started/installation.md @@ -5,8 +5,13 @@ Installation is very easy and only takes a few seconds. ## Requirements Please make sure your computer/server meets the following requirements: - - [Node.js](https://nodejs.org) >= 9: Node.js is a server platform which runs JavaScript. Installation guide [here](https://nodejs.org/en/download/). - - [MongoDB](https://www.mongodb.com/) >= 2.6: MongoDB is a powerful document store. Installation guide [here](https://www.mongodb.com/download-center?j#community). + - [Node.js](https://nodejs.org) >= 10.x: Node.js is a server platform which runs JavaScript. Installation guide [here](https://nodejs.org/en/download/). + - [NPM](https://www.npmjs.com/) >= 6.x: NPM is the package manager for Javascript. Installation guide [here](https://nodejs.org/en/download/). +*(Make sure the database that you are using meets the requirement.)* + - [MongoDB](https://www.mongodb.com/) >= 3.x: MongoDB is a powerful document store. Installation guide [here](https://www.mongodb.com/download-center?j#community). + - [MySQL](https://www.mysql.com/) >= 5.6: MySQL is an open-source relational database management system. Installation guide [here](https://dev.mysql.com/downloads/). + - [MariaDB](https://mariadb.org/) >= 10.1: MarialDB is a fork of MySQL and is guaranteed to stay open source. Installation guide [here](https://mariadb.org/download/). + - [PostgreSQL](https://www.postgresql.org/) >= 10: PostgreSQL is an open-source object-relational database management system. Installation guide [here](https://www.postgresql.org/download/). ## Setup diff --git a/packages/strapi-admin/admin/src/translations/tr.json b/packages/strapi-admin/admin/src/translations/tr.json index 86b2d46078..becc5fb2c6 100644 --- a/packages/strapi-admin/admin/src/translations/tr.json +++ b/packages/strapi-admin/admin/src/translations/tr.json @@ -26,6 +26,7 @@ "app.components.DownloadInfo.download": "İndirme devam ediyor...", "app.components.DownloadInfo.text": "Bu birkaç dakika sürebilir. Sabrınız için teşekkürler.", "app.components.HomePage.button.blog": "BLOG SAYFASINDA DAHA FAZLASINI GÖRÜN", + "app.components.EmptyAttributes.title": "Alan henüz yok", "app.components.HomePage.button.quickStart": "HIZLI BAŞLANGIÇ YAP", "app.components.HomePage.community": "Topluluğumuza ulaşın", "app.components.HomePage.community.content": "Farklı kanallarda takım üyeleri, katkıda bulunanlar ve geliştiricilere ulaşın.", diff --git a/packages/strapi-generate-new/files/server.js b/packages/strapi-generate-new/files/server.js old mode 100644 new mode 100755 diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/tr.json b/packages/strapi-plugin-content-manager/admin/src/translations/tr.json index 932a17e317..c142ee5e44 100644 --- a/packages/strapi-plugin-content-manager/admin/src/translations/tr.json +++ b/packages/strapi-plugin-content-manager/admin/src/translations/tr.json @@ -3,6 +3,8 @@ "components.AddFilterCTA.add": "Filtreler", "components.AddFilterCTA.hide": "Filtreler", "components.DraggableAttr.edit": "Düzenlemek için tıklayın", + "components.EmptyAttributesBlock.button": "Ayarlar sayfasına git", + "components.EmptyAttributesBlock.description": "Ayarlarınızı değiştirebilirsiniz", "components.FilterOptions.FILTER_TYPES.=": "eşit", "components.FilterOptions.FILTER_TYPES._contains": "içermek", "components.FilterOptions.FILTER_TYPES._containss": "içermek (büyük-küçük harfe duyarlı)", @@ -25,10 +27,13 @@ "components.TableEmpty.withFilters": "Uygulanan filtrelerle {contentType} yoktur...", "components.TableEmpty.withSearch": "Aramaya karşılık gelen {contentType} yoktur ({search})...", "components.TableEmpty.withoutFilter": "{contentType} yoktur...", + "containers.Edit.addAnItem": "Bir öğe ekle...", + "containers.Edit.clickToJump": "Kayıta atlamak için tıklayın", "containers.Edit.delete": "Sil", "containers.Edit.editing": "Düzenleniyor...", "containers.Edit.reset": "Reset", "containers.Edit.returnList": "Listeye dön", + "containers.Edit.seeDetails": "Detaylar", "containers.Edit.submit": "Kaydet", "containers.Home.introduction": "Girişlerinizi düzenlemek için soldaki menüdeki ilgili bağlantıya gidin. Bu eklentinin ayarları düzenlemek için uygun bir yol bulunmamaktadır ve halen aktif geliştirme aşamasındadır.", "containers.Home.pluginHeaderDescription": "Güçlü ve güzel bir arayüz aracılığıyla girişlerinizi yönetin.", @@ -37,12 +42,17 @@ "containers.List.errorFetchRecords": "Hata", "containers.List.pluginHeaderDescription": "{label} kayıt bulundu", "containers.List.pluginHeaderDescription.singular": "{label} kayıt bulundu", + "containers.ListPage.displayedFields": "Görüntülenen Alanlar", "containers.SettingPage.addField": "Yeni alan ekle", + "containers.SettingPage.addRelationalField": "Add new relational field", "containers.SettingPage.attributes": "Nitelik alanları", "containers.SettingPage.attributes.description": "Niteliklerin sırasını tanımlayın", + "containers.SettingPage.editSettings.description": "Yerleşimi oluşturmak için alanları sürükleyip bırakın", + "containers.SettingPage.editSettings.title": "Düzenle - Ayarlar", "containers.SettingPage.listSettings.description": "Bu içerik türü için seçenekleri yapılandırın", "containers.SettingPage.listSettings.title": "Liste — Ayarlar", "containers.SettingPage.pluginHeaderDescription": "Bu İçerik Türü için belirli ayarları yapılandırın", + "containers.SettingPage.relations": "İlişkisel alanlar", "containers.SettingsPage.Block.contentType.description": "Belirli ayarları yapılandırın", "containers.SettingsPage.Block.contentType.title": "İçerik Türleri", "containers.SettingsPage.Block.generalSettings.description": "İçerik Türleriniz için varsayılan seçenekleri yapılandırın", @@ -73,17 +83,20 @@ "error.validation.required": "Zorunlu alandır.", "form.Input.bulkActions": "Toplu işlemleri etkinleştir", "form.Input.defaultSort": "Varsayılan sıralama özelliği", - "form.Input.description": "Description", - "form.Input.description.placeholder": "Display name in the profile", - "form.Input.disabled": "Editable field", + "form.Input.description": "Açıklama", + "form.Input.description.placeholder": "Profildeki görünen ad", + "form.Input.disabled": "Düzenlenebilir alan", "form.Input.filters": "Filtreleri etkinleştir", "form.Input.label": "Etiket", "form.Input.label.inputDescription": "Bu değer, tablonun başında görüntülenen etiketi geçersiz kılar", "form.Input.pageEntries": "Sayfa başına kayıtlar", "form.Input.pageEntries.inputDescription": "Not: Bu değeri İçerik Türü ayarları sayfasında geçersiz kılabilirsiniz..", + "form.Input.placeholder": "Placeholder", + "form.Input.placeholder.placeholder": "Müthiş değerim", "form.Input.search": "Aramayı etkinleştir", "form.Input.search.field": "Bu alanda aramayı etkinleştir", "form.Input.sort.field": "Bu alana göre sıralamayı etkinleştir", + "notification.error.displayedFields": "En az bir görüntülenen alana ihtiyacınız var", "notification.error.relationship.fetch": "İlişki getirme sırasında bir hata oluştu.", "notification.info.SettingPage.disableSort": "Sıralamaya izin verilen tek bir özelliğe sahip olmanız gerekir", "pageNotFound": "Sayfa bulunamadı", diff --git a/packages/strapi-plugin-content-manager/admin/src/utils/formValidations.js b/packages/strapi-plugin-content-manager/admin/src/utils/formValidations.js index 8adda2cbf2..b6b01fbc40 100644 --- a/packages/strapi-plugin-content-manager/admin/src/utils/formValidations.js +++ b/packages/strapi-plugin-content-manager/admin/src/utils/formValidations.js @@ -1,4 +1,17 @@ -import { forEach, isObject, isArray, map, mapKeys, includes, reject, isEmpty, findIndex, isUndefined } from 'lodash'; +import { + forEach, + isObject, + isArray, + map, + mapKeys, + includes, + reject, + isEmpty, + findIndex, + isUndefined, + isBoolean, + isNumber, +} from 'lodash'; /* eslint-disable consistent-return */ export function getValidationsFromForm(form, formValidations) { @@ -88,7 +101,7 @@ function validate(value, validations) { case 'type': if (validationValue === 'json') { try { - if (isObject(value)) { + if (isObject(value) || isBoolean(value) || isNumber(value) || isArray(value)) { value = JSON.parse(JSON.stringify(value)); } else { errors.push({ id: 'content-manager.error.validation.json' }); diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json b/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json index 0eec87ccc0..3ebdb03dae 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json @@ -78,6 +78,11 @@ "form.server.item.cron": "Cron", "form.server.item.host": "Sunucu", "form.server.item.port": "Port", + "form.server.item.proxy": "Vekil Sunucu Ayarları", + "form.server.item.proxy.enable": "Vekil Sunucuyu Etkinleştir", + "form.server.item.proxy.host": "Vekil Sunucu", + "form.server.item.proxy.port": "Vekil Sunucu Port", + "form.server.item.proxy.ssl": "Vekil Sunucu SSL", "form.server.name": "Sunucu", "language.af": "Afrikaans", "language.af_NA": "Afrikaans (Namibië)", diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js index 4c165782e2..df4357dc3e 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js @@ -76,6 +76,10 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre } if (!isEmpty(get(this.props.modifiedData, 'password')) && !isEmpty(get(this.props.modifiedData, 'confirmPassword')) && findIndex(acc, ['name', 'confirmPassword']) === -1) { + if (this.props.modifiedData.password.length < 6) { + acc.push({ name: 'password', errors: [{ id: 'users-permissions.components.Input.error.password.length' }] }); + } + if (get(this.props.modifiedData, 'password') !== get(this.props.modifiedData, 'confirmPassword')) { acc.push({ name: 'confirmPassword', errors: [{ id: 'users-permissions.components.Input.error.password.noMatch' }] }); } diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json index 01d4d505e5..5cd377a899 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json @@ -142,6 +142,7 @@ "PopUpForm.header.edit.providers": "Edit {provider} Provider", "PopUpForm.inputSelect.providers.label": "Choose the provider", "components.Input.error.password.noMatch": "Passwords do not match", + "components.Input.error.password.length": "Password is too short", "notification.error.delete": "An error occurred while trying to delete the item", "notification.error.fetch": "An error occurred while trying to fetch data", "notification.error.fetchUser": "An error occurred while trying to fetch users", diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/fr.json b/packages/strapi-plugin-users-permissions/admin/src/translations/fr.json index 08b0e2cb4c..e64ca4974d 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/fr.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/fr.json @@ -133,6 +133,7 @@ "PopUpForm.header.edit.providers": "Editer {provider} Provider", "PopUpForm.inputSelect.providers.label": "Sélectionnez le provider", "components.Input.error.password.noMatch": "Le mot de passe ne correspond pas", + "components.Input.error.password.length": "Le password doit contenir au moins 6 caractères", "notification.error.delete": "Une erreur est survenue en essayant de supprimer cet élément", "notification.error.fetch": "Une erreur est survenue en essayant de récupérer les données", "notification.error.fetchUser": "Une erreur est survenue en esssayent de récupérer les users", diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/tr.json b/packages/strapi-plugin-users-permissions/admin/src/translations/tr.json index beecdbea41..ea9471692e 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/tr.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/tr.json @@ -6,7 +6,9 @@ "Auth.form.button.register": "Başlamaya hazır", "Auth.form.button.register-success": "Tekrar gönderin", "Auth.form.button.reset-password": "Şifre değiştir", + "Auth.form.error.blocked": "Hesabınız yönetici tarafından engellendi.", "Auth.form.error.code.provide": "Geçersiz sağlanmış kod.", + "Auth.form.error.confirmed": "Tanımladığınız e-posta onaylanmadı.", "Auth.form.error.email.invalid": "E-postası geçersiz.", "Auth.form.error.email.provide": "Lütfen kullanıcı adınızı veya e-postanızı belirtin.", "Auth.form.error.email.taken": "E-posta zaten alınmış", @@ -17,7 +19,8 @@ "Auth.form.error.password.local": "Bu kullanıcı hiçbir bir şifre belirlemedi; hesap oluşturma sırasında kullanılan sağlayıcı aracılığıyla lütfen giriş yapınız..", "Auth.form.error.password.matching": "Parolalar uyuşmuyor.", "Auth.form.error.password.provide": "Lütfen şifrenizi girin.", - "Auth.form.error.user.not-exist": "Bu e-posta bulunmamaktadır..", + "Auth.form.error.ratelimit": "Çok fazla deneme var. Lütfen bir dakika sonra tekrar deneyin.", + "Auth.form.error.user.not-exist": "Bu e-posta bulunmamaktadır..", "Auth.form.error.username.taken": "Kullanıcı adı zaten alınmış", "Auth.form.forgot-password.email.label": "E-postanızı giriniz", "Auth.form.forgot-password.email.label.success": "E-posta başarıyla gönderildi, ", @@ -52,8 +55,12 @@ "EditForm.inputSelect.subscriptions.description": "Saat başına IP için abone sayısını sınırlayın.", "EditForm.inputSelect.subscriptions.label": "Abonelik kotalarını yönetme", "EditForm.inputToggle.description.email": "Kullanıcıyı, farklı kimlik doğrulama sağlayıcılarıyla aynı e-posta adresini kullanarak birden fazla hesap oluşturmasına izin vermeyin.", + "EditForm.inputToggle.description.email-confirmation": "Etkinleştirildiğinde yeni kayıtlı kullanıcılar bir onay e-postası alır.", + "EditForm.inputToggle.description.email-confirmation-redirection": "E-postanızı onayladıktan sonra, yönlendirileceğiniz yeri seçin.", "EditForm.inputToggle.description.sign-up": "Devre dışı bırakıldığında (KAPALI), kayıt işlemi yasaktır. Artık kullanılan sağlayıcı ne olursa olsun hiç kimse abone olamaz.", "EditForm.inputToggle.label.email": "E-posta adresi başına bir hesap", + "EditForm.inputToggle.label.email-confirmation": "E-posta onayını etkinleştir", + "EditForm.inputToggle.label.email-confirmation-redirection": "Yönlendirme URL'si", "EditForm.inputToggle.label.sign-up": "Kayıtları etkinleştir", "EditPage.cancel": "İptal", "EditPage.form.roles": "Rol detayları", @@ -69,6 +76,7 @@ "EditPage.notification.policies.error": "İlkeler getirilirken bir hata oluştu.", "EditPage.notification.role.error": "Rol getirilirken bir hata oluştu.", "EditPage.submit": "Kaydet", + "Email.template.email_confirmation": "E-posta adresi onayı", "Email.template.reset_password": "Şifreyi yenile", "Email.template.success_register": "Kayıt başarılı", "Email.template.validation_email": "E-posta adresinin doğrulanması", @@ -113,7 +121,8 @@ "PopUpForm.Email.success_register.options.object.placeholder": "Lütfen %APP_NAME% için e-posta adresinizi onaylayın", "PopUpForm.Email.validation_email.options.message.placeholder": "

Hesabınızı doğrulamak için lütfen bu bağlantıyı tıklayın.

", "PopUpForm.Email.validation_email.options.object.placeholder": "Lütfen %APP_NAME% için e-posta adresinizi onaylayın", - "PopUpForm.Providers.callback.placeholder": "METİN", + "PopUpForm.Providers.discord.providerConfig.redirectURL": "Discord uygulama yapılandırmalarınıza eklenecek yönlendirme URL'si", + "PopUpForm.Providers.callback.placeholder": "METİN", "PopUpForm.Providers.enabled.description": "Devre dışı bırakıldıysa kullanıcılar bu sağlayıcıyı kullanamaz.", "PopUpForm.Providers.enabled.label": "Etkinleştirme", "PopUpForm.Providers.facebook.providerConfig.redirectURL": "Facebook uygulama yapılandırmalarınıza eklenecek yönlendirme URL'si", @@ -122,6 +131,7 @@ "PopUpForm.Providers.key.label": "Web istemcisi ID", "PopUpForm.Providers.key.placeholder": "METİN", "PopUpForm.Providers.linkedin2.providerConfig.redirectURL": "Linkedin uygulama yapılandırmalarınıza eklenecek yönlendirme URL'si", + "PopUpForm.Providers.microsoft.providerConfig.redirectURL": "Microsoft uygulama yapılandırmalarınıza eklenecek yönlendirme URL'si", "PopUpForm.Providers.redirectURL.front-end.label": "Arayüz uygulamanızın yönlendirme URL'si", "PopUpForm.Providers.secret.label": "Web istemcisi Secret", "PopUpForm.Providers.secret.placeholder": "METİN", @@ -132,7 +142,8 @@ "PopUpForm.header.edit.email-templates": "E-posta Şablonlarını Düzenle", "PopUpForm.header.edit.providers": "{sağlayıcı} sağlayıcını düzenle", "PopUpForm.inputSelect.providers.label": "Sağlayıcıyı seçin", - "components.Input.error.password.noMatch": "Parolalar uyuşmuyor", + "components.Input.error.password.noMatch": "Şifreler uyuşmuyor", + "components.Input.error.password.length": "Şifreniz çok kısa", "notification.error.delete": "Öğe silinirken bir hata oluştu", "notification.error.fetch": "Verileri getirmeye çalışılırken bir hata oluştu", "notification.error.fetchUser": "Kullanıcıları getirmeye çalışılırken bir hata oluştu", diff --git a/packages/strapi/bin/strapi.js b/packages/strapi/bin/strapi.js old mode 100644 new mode 100755