diff --git a/api/awtis/models/awtis.js b/api/awtis/models/awtis.js
deleted file mode 100644
index 0d91bcf..0000000
--- a/api/awtis/models/awtis.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-
-/**
- * Read the documentation (https://strapi.io/documentation/v3.x/concepts/models.html#lifecycle-hooks)
- * to customize this model
- */
-
-const slugify = require('slugify')
-
-const jwennTeksEpiId = async data => {
- const teks = await strapi.query('teks').find({id_in: data})
- return teks
-}
-
-const jwennAwtisEpiId = async id => {
- const awtis = await strapi.query('awtis').find({id})
- return awtis
-}
-
-module.exports = {
- lifecycles: {
- beforeUpdate: async (params, data) => {
- if (!data.slug) {
- data.slug = slugify(data.alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
- }
- },
- beforeCreate: async data => {
- data.slug = slugify(data.alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
- },
- afterUpdate: async (params, data) => {
- const {id} = data
- const awtis = await jwennAwtisEpiId(id)
-
- if (awtis.teks && awtis.teks.length >= 1) {
- const teks = await jwennTeksEpiId(awtis.teks)
- Promise.all(teks.map(async t => {
- const {id, tit, slug, awtis} = t
- const alias = awtis.map(a => a.alias).join('-')
- const slugUpdated = slugify(`${alias}-${tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
- if (slug !== slugUpdated) {
- await strapi.query('teks').update(
- {id},
- {slug: slugUpdated}
- )
- }
- }))
- }
- }
- }
-}
diff --git a/api/komante/models/komante.js b/api/komante/models/komante.js
deleted file mode 100644
index e4f3329..0000000
--- a/api/komante/models/komante.js
+++ /dev/null
@@ -1,39 +0,0 @@
-'use strict';
-
-const jwennTeksEpiId = async teksId => {
- const teks = await strapi.query('teks').findOne({id: teksId})
- return teks
-}
-
-const jwennUserEpiId = async userId => {
- const user = await strapi.query('user', 'users-permissions').findOne({id: userId})
- return user
-}
-
-module.exports = {
- lifecycles: {
- beforeCreate: async data => {
- if (data.kontni && data.teks && data.user) {
- const teks = await jwennTeksEpiId(data.teks)
- const user = await jwennUserEpiId(data.user)
-
- if(!teks || !user) {
- throw strapi.errors.badRequest('Not found')
- }
-
- } else {
- throw strapi.errors.badRequest('Missing fields')
- }
- },
- afterCreate: async data => {
- if (data.user) {
- strapi.services.email.send(
- process.env.SMTP_FROM,
- process.env.SMTP_SEND_TO,
- `Nouveau commentaire de ${data.user.username}`,
- data.kontni
- )
- }
- }
- }
-};
diff --git a/api/teks/models/teks.js b/api/teks/models/teks.js
deleted file mode 100644
index 088f4fe..0000000
--- a/api/teks/models/teks.js
+++ /dev/null
@@ -1,130 +0,0 @@
-'use strict';
-
-const slugify = require('slugify')
-const axios = require('axios')
-
-const TELEGRAM_API_URL = 'https://api.telegram.org'
-const TELEGRAM_CHAN_ID = process.env.TELEGRAM_CHAN_ID || null
-const TELEGRAM_API_TOKEN = process.env.TELEGRAM_API_TOKEN || null
-const MESSAGE_URL = `${TELEGRAM_API_URL}/bot${TELEGRAM_API_TOKEN}/sendMessage?chat_id=${TELEGRAM_CHAN_ID}&parse_mode=html`
-
-const jwennAwtisEpiId = async data => {
- const awtis = await strapi.query('awtis').find({id: data})
- return awtis.map(a => a.alias).join('-')
-}
-
-const jwennUserEpiId = async userId => {
- if (!userId) {
- return null
- }
-
- const user = await strapi.query('user', 'users-permissions').findOne({id: userId})
- return user
-}
-
-const jwennUserAdminEpiId = async userAdminId => {
- if (!userAdminId) {
- return null
- }
-
- const user = await strapi.query('user', 'admin').findOne({id: userAdminId, 'roles.code_nin': 'strapi-super-admin'})
- return user
-}
-
-const translateTeks = async teksFR => {
- const english = await strapi.services.translator.translate('FR', 'EN', teksFR)
- const espagnol = await strapi.services.translator.translate('FR', 'ES', teksFR)
- const deutsch = await strapi.services.translator.translate('FR', 'DE', teksFR)
- const italiano = await strapi.services.translator.translate('FR', 'IT', teksFR)
-
- return {
- francais: teksFR,
- english: english + '\n\n (Translated by DeepL)',
- espagnol: espagnol + '\n\n (Traducido por DeepL)',
- deutsch: deutsch + '\n\n (Übersetzt von DeepL)',
- italiano: italiano + '\n\n (Tradotto da DeepL)'
- }
-}
-
-module.exports = {
- lifecycles: {
- beforeCreate: async data => {
- const user = await jwennUserEpiId(data?.user?.id)
- const userAdmin = await jwennUserAdminEpiId(data?.created_by)
-
- if (userAdmin) {
- data.userAdmin = userAdmin.username
- }
-
- if (data.tit && !data.forceSlug) {
- const awtis = await jwennAwtisEpiId(data.awtis)
- data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
- }
-
- if (user && user.canAutoTranslate && data.tradiksyonOtomatik && data.tradiksyon.francais && (!data.tradiksyon.english || !data.tradiksyon.espagnol || !data.tradiksyon.deutsch || !data.tradiksyon.italiano)) {
- const traslate = await translateTeks(data.tradiksyon.francais)
- data.tradiksyon = traslate
- }
-
- },
- beforeUpdate: async (params, data) => {
- if (data.tit && !data.forceSlug) {
- const awtis = await jwennAwtisEpiId(data.awtis)
- data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
- }
- if (data.published_at != null) {
- const {id} = params
- const previousData = await strapi.query('teks').findOne({id})
-
- const previousPublishedAt = previousData.published_at
- const currentPublished_at = data.published_at
- if (currentPublished_at != previousPublishedAt) {
- const message = `Nouvelle publication \xF0\x9F\x8E\xB6 \xF0\x9F\x94\xA5
-\n${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
- if (previousData.user) {
- strapi.services.email.send(
- process.env.SMTP_FROM,
- previousData.user.email,
- `Publication de "${previousData.tit}"`,
- `Le titre que vous avez soumis, "${previousData.tit}" a été publié sur le site. Vous pouvez le trouver à l'adresse ${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
- )
- }
-
- const user = await jwennUserAdminEpiId(previousData?.created_by?.id)
-
- if (user) {
- strapi.services.email.send(
- process.env.SMTP_FROM,
- user.email,
- `Publication de "${previousData.tit}"`,
- `Le titre que vous avez soumis, "${previousData.tit}" a été publié sur le site. Vous pouvez le trouver à l'adresse ${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
- )
- }
-
- await axios.post(`${MESSAGE_URL}&text=${message}`)
- }
- }
- },
- afterCreate: async data => {
- if (data.user) {
- strapi.services.email.send(
- process.env.SMTP_FROM,
- process.env.SMTP_SEND_TO,
- `Nouveau texte de ${data.user.username} : "${data.tit}" (site)`,
- `Le titre "${data.tit}" a été soumis depuis le site.`
- )
- }
-
- const user = await jwennUserAdminEpiId(data?.created_by?.id)
-
- if (user) {
- strapi.services.email.send(
- process.env.SMTP_FROM,
- process.env.SMTP_SEND_TO,
- `Nouveau texte de ${user.username} : "${data.tit}" (dashboard)`,
- `Le titre "${data.tit}" a été soumis depuis le dashboard.`
- )
- }
- }
- }
-}
diff --git a/src/api/awti/content-types/lifecycle.js b/src/api/awti/content-types/lifecycle.js
new file mode 100644
index 0000000..edf9d78
--- /dev/null
+++ b/src/api/awti/content-types/lifecycle.js
@@ -0,0 +1,53 @@
+'use strict';
+
+/**
+ * Read the documentation (https://strapi.io/documentation/v3.x/concepts/models.html#lifecycle-hooks)
+ * to customize this model
+ */
+
+const slugify = require('slugify')
+
+const jwennTeksEpiId = async data => {
+ const teks = await strapi.query('teks').find({id_in: data})
+ return teks
+}
+
+const jwennAwtisEpiId = async id => {
+ const awtis = await strapi.query('awtis').find({id})
+ return awtis
+}
+
+module.exports = {
+ beforeUpdate: async event => {
+ let {data} = event
+
+ if (!data.slug) {
+ data.slug = slugify(data.alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
+ }
+ },
+ beforeCreate: async event => {
+ let {data} = event
+
+ data.slug = slugify(data.alias, {lower: true, remove: /[*#+~.()'"!:@]/g})
+ },
+ afterUpdate: async event => {
+ let {data} = event
+ const {id} = data
+ const awtis = await jwennAwtisEpiId(id)
+
+ if (awtis.teks && awtis.teks.length >= 1) {
+ const teks = await jwennTeksEpiId(awtis.teks)
+ Promise.all(teks.map(async t => {
+ const {id, tit, slug, awtis} = t
+ const alias = awtis.map(a => a.alias).join('-')
+ const slugUpdated = slugify(`${alias}-${tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
+ if (slug !== slugUpdated) {
+ await strapi.query('teks').update(
+ {id},
+ {slug: slugUpdated}
+ )
+ }
+ }))
+ }
+ }
+}
diff --git a/api/awtis/models/awtis.settings.json b/src/api/awti/content-types/schema.json
similarity index 81%
rename from api/awtis/models/awtis.settings.json
rename to src/api/awti/content-types/schema.json
index 7add56c..eccb7ba 100644
--- a/api/awtis/models/awtis.settings.json
+++ b/src/api/awti/content-types/schema.json
@@ -2,6 +2,9 @@
"kind": "collectionType",
"collectionName": "awtis",
"info": {
+ "singularName": "awti",
+ "pluralName": "awtis",
+ "displayName": "Awtis",
"name": "awtis",
"description": ""
},
@@ -39,8 +42,10 @@
"pluginOptions": {}
},
"teks": {
- "via": "awtis",
- "collection": "teks"
+ "type": "relation",
+ "relation": "manyToMany",
+ "target": "api::tek.tek",
+ "inversedBy": "teks"
},
"user": {
"plugin": "users-permissions",
diff --git a/src/api/komant/content-types/lifecycle.js b/src/api/komant/content-types/lifecycle.js
new file mode 100644
index 0000000..ac2faa1
--- /dev/null
+++ b/src/api/komant/content-types/lifecycle.js
@@ -0,0 +1,39 @@
+'use strict';
+
+const jwennTeksEpiId = async teksId => {
+ const teks = await strapi.query('teks').findOne({id: teksId})
+ return teks
+}
+
+const jwennUserEpiId = async userId => {
+ const user = await strapi.query('user', 'users-permissions').findOne({id: userId})
+ return user
+}
+
+module.exports = {
+ beforeCreate: async event => {
+ let {data} = event
+
+ if (data.kontni && data.teks && data.user) {
+ const teks = await jwennTeksEpiId(data.teks)
+ const user = await jwennUserEpiId(data.user)
+
+ if(!teks || !user) {
+ throw strapi.errors.badRequest('Not found')
+ }
+
+ } else {
+ throw strapi.errors.badRequest('Missing fields')
+ }
+ },
+ afterCreate: async data => {
+ if (data.user) {
+ strapi.services.email.send(
+ process.env.SMTP_FROM,
+ process.env.SMTP_SEND_TO,
+ `Nouveau commentaire de ${data.user.username}`,
+ data.kontni
+ )
+ }
+ }
+};
diff --git a/api/komante/models/komante.settings.json b/src/api/komant/content-types/schema.json
similarity index 76%
rename from api/komante/models/komante.settings.json
rename to src/api/komant/content-types/schema.json
index fb9f77a..d7b1f87 100644
--- a/api/komante/models/komante.settings.json
+++ b/src/api/komant/content-types/schema.json
@@ -2,6 +2,9 @@
"kind": "collectionType",
"collectionName": "komante",
"info": {
+ "singularName": "komant",
+ "pluralName": "komante",
+ "displayName": "Komante",
"name": "komante",
"description": ""
},
@@ -24,8 +27,9 @@
"model": "user"
},
"teks": {
- "via": "komante",
- "model": "teks"
+ "type": "relation",
+ "relation": "oneToOne",
+ "target": "api::tek.tek"
},
"sentAt": {
"type": "datetime",
diff --git a/src/api/tek/content-types/lifecycle.js b/src/api/tek/content-types/lifecycle.js
new file mode 100644
index 0000000..930cb04
--- /dev/null
+++ b/src/api/tek/content-types/lifecycle.js
@@ -0,0 +1,133 @@
+'use strict';
+
+const slugify = require('slugify')
+const axios = require('axios')
+
+const TELEGRAM_API_URL = 'https://api.telegram.org'
+const TELEGRAM_CHAN_ID = process.env.TELEGRAM_CHAN_ID || null
+const TELEGRAM_API_TOKEN = process.env.TELEGRAM_API_TOKEN || null
+const MESSAGE_URL = `${TELEGRAM_API_URL}/bot${TELEGRAM_API_TOKEN}/sendMessage?chat_id=${TELEGRAM_CHAN_ID}&parse_mode=html`
+
+const jwennAwtisEpiId = async data => {
+ const awtis = await strapi.query('awtis').find({id: data})
+ return awtis.map(a => a.alias).join('-')
+}
+
+const jwennUserEpiId = async userId => {
+ if (!userId) {
+ return null
+ }
+
+ const user = await strapi.query('user', 'users-permissions').findOne({id: userId})
+ return user
+}
+
+const jwennUserAdminEpiId = async userAdminId => {
+ if (!userAdminId) {
+ return null
+ }
+
+ const user = await strapi.query('user', 'admin').findOne({id: userAdminId, 'roles.code_nin': 'strapi-super-admin'})
+ return user
+}
+
+const translateTeks = async teksFR => {
+ const english = await strapi.services.translator.translate('FR', 'EN', teksFR)
+ const espagnol = await strapi.services.translator.translate('FR', 'ES', teksFR)
+ const deutsch = await strapi.services.translator.translate('FR', 'DE', teksFR)
+ const italiano = await strapi.services.translator.translate('FR', 'IT', teksFR)
+
+ return {
+ francais: teksFR,
+ english: english + '\n\n (Translated by DeepL)',
+ espagnol: espagnol + '\n\n (Traducido por DeepL)',
+ deutsch: deutsch + '\n\n (Übersetzt von DeepL)',
+ italiano: italiano + '\n\n (Tradotto da DeepL)'
+ }
+}
+
+module.exports = {
+ beforeCreate: async event => {
+ let {data} = event
+ const user = await jwennUserEpiId(data?.user?.id)
+ const userAdmin = await jwennUserAdminEpiId(data?.created_by)
+
+ if (userAdmin) {
+ data.userAdmin = userAdmin.username
+ }
+
+ if (data.tit && !data.forceSlug) {
+ const awtis = await jwennAwtisEpiId(data.awtis)
+ data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
+ }
+
+ if (user && user.canAutoTranslate && data.tradiksyonOtomatik && data.tradiksyon.francais && (!data.tradiksyon.english || !data.tradiksyon.espagnol || !data.tradiksyon.deutsch || !data.tradiksyon.italiano)) {
+ const traslate = await translateTeks(data.tradiksyon.francais)
+ data.tradiksyon = traslate
+ }
+
+ },
+ beforeUpdate: async event => {
+ let {data} = event
+
+ if (data.tit && !data.forceSlug) {
+ const awtis = await jwennAwtisEpiId(data.awtis)
+ data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
+ }
+ if (data.published_at != null) {
+ const {id} = params
+ const previousData = await strapi.query('teks').findOne({id})
+
+ const previousPublishedAt = previousData.published_at
+ const currentPublished_at = data.published_at
+ if (currentPublished_at != previousPublishedAt) {
+ const message = `Nouvelle publication \xF0\x9F\x8E\xB6 \xF0\x9F\x94\xA5
+\n${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
+ if (previousData.user) {
+ strapi.services.email.send(
+ process.env.SMTP_FROM,
+ previousData.user.email,
+ `Publication de "${previousData.tit}"`,
+ `Le titre que vous avez soumis, "${previousData.tit}" a été publié sur le site. Vous pouvez le trouver à l'adresse ${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
+ )
+ }
+
+ const user = await jwennUserAdminEpiId(previousData?.created_by?.id)
+
+ if (user) {
+ strapi.services.email.send(
+ process.env.SMTP_FROM,
+ user.email,
+ `Publication de "${previousData.tit}"`,
+ `Le titre que vous avez soumis, "${previousData.tit}" a été publié sur le site. Vous pouvez le trouver à l'adresse ${process.env.WEBSITE_URL}/paroles/${previousData.slug}`
+ )
+ }
+
+ await axios.post(`${MESSAGE_URL}&text=${message}`)
+ }
+ }
+ },
+ afterCreate: async event => {
+ let {data} = event
+
+ if (data.user) {
+ strapi.services.email.send(
+ process.env.SMTP_FROM,
+ process.env.SMTP_SEND_TO,
+ `Nouveau texte de ${data.user.username} : "${data.tit}" (site)`,
+ `Le titre "${data.tit}" a été soumis depuis le site.`
+ )
+ }
+
+ const user = await jwennUserAdminEpiId(data?.created_by?.id)
+
+ if (user) {
+ strapi.services.email.send(
+ process.env.SMTP_FROM,
+ process.env.SMTP_SEND_TO,
+ `Nouveau texte de ${user.username} : "${data.tit}" (dashboard)`,
+ `Le titre "${data.tit}" a été soumis depuis le dashboard.`
+ )
+ }
+ }
+}
diff --git a/api/teks/models/teks.settings.json b/src/api/tek/content-types/schema.json
similarity index 82%
rename from api/teks/models/teks.settings.json
rename to src/api/tek/content-types/schema.json
index a3707df..3d8f976 100644
--- a/api/teks/models/teks.settings.json
+++ b/src/api/tek/content-types/schema.json
@@ -2,6 +2,9 @@
"kind": "collectionType",
"collectionName": "teks",
"info": {
+ "singularName": "tek",
+ "pluralName": "teks",
+ "displayName": "Teks",
"name": "Teks",
"description": ""
},
@@ -33,9 +36,10 @@
"component": "url.liens"
},
"awtis": {
- "via": "teks",
- "collection": "awtis",
- "dominant": true
+ "type": "relation",
+ "relation": "manyToMany",
+ "target": "api::awti.awti",
+ "mappedBy": "tek"
},
"kouteyAchtey": {
"type": "component",
@@ -66,8 +70,9 @@
"type": "boolean"
},
"komante": {
- "via": "teks",
- "collection": "komante"
+ "type": "relation",
+ "relation": "oneToOne",
+ "target": "api::komant.komant"
},
"forceSlug": {
"type": "boolean"