From 0b64a943c103709aa9151d42dde275049d9c7108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Wed, 13 Mar 2024 06:54:59 +0100 Subject: [PATCH] Create articles collections --- .../article/content-types/article/schema.json | 55 +++++++ src/api/article/controllers/article.js | 9 ++ src/api/article/routes/article.js | 9 ++ src/api/article/services/article.js | 9 ++ types/generated/contentTypes.d.ts | 141 ++++++++++++------ 5 files changed, 175 insertions(+), 48 deletions(-) create mode 100644 src/api/article/content-types/article/schema.json create mode 100644 src/api/article/controllers/article.js create mode 100644 src/api/article/routes/article.js create mode 100644 src/api/article/services/article.js diff --git a/src/api/article/content-types/article/schema.json b/src/api/article/content-types/article/schema.json new file mode 100644 index 0000000..905fe3a --- /dev/null +++ b/src/api/article/content-types/article/schema.json @@ -0,0 +1,55 @@ +{ + "kind": "collectionType", + "collectionName": "articles", + "info": { + "singularName": "article", + "pluralName": "articles", + "displayName": "Article", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "titre": { + "type": "string", + "required": true, + "unique": true + }, + "top": { + "type": "boolean" + }, + "couverture": { + "type": "media", + "multiple": false, + "required": true, + "allowedTypes": [ + "images" + ] + }, + "fichiers": { + "type": "media", + "multiple": true, + "required": false, + "allowedTypes": [ + "images", + "files", + "videos", + "audios" + ] + }, + "contenu": { + "type": "customField", + "options": { + "output": "HTML", + "preset": "rich" + }, + "required": true, + "customField": "plugin::ckeditor.CKEditor" + }, + "date": { + "type": "string" + } + } +} diff --git a/src/api/article/controllers/article.js b/src/api/article/controllers/article.js new file mode 100644 index 0000000..c4bca44 --- /dev/null +++ b/src/api/article/controllers/article.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * article controller + */ + +const { createCoreController } = require('@strapi/strapi').factories; + +module.exports = createCoreController('api::article.article'); diff --git a/src/api/article/routes/article.js b/src/api/article/routes/article.js new file mode 100644 index 0000000..4d843fa --- /dev/null +++ b/src/api/article/routes/article.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * article router + */ + +const { createCoreRouter } = require('@strapi/strapi').factories; + +module.exports = createCoreRouter('api::article.article'); diff --git a/src/api/article/services/article.js b/src/api/article/services/article.js new file mode 100644 index 0000000..b9890be --- /dev/null +++ b/src/api/article/services/article.js @@ -0,0 +1,9 @@ +'use strict'; + +/** + * article service + */ + +const { createCoreService } = require('@strapi/strapi').factories; + +module.exports = createCoreService('api::article.article'); diff --git a/types/generated/contentTypes.d.ts b/types/generated/contentTypes.d.ts index 20eb9da..7aa1814 100644 --- a/types/generated/contentTypes.d.ts +++ b/types/generated/contentTypes.d.ts @@ -362,6 +362,50 @@ export interface AdminTransferTokenPermission extends Schema.CollectionType { }; } +export interface ApiArticleArticle extends Schema.CollectionType { + collectionName: 'articles'; + info: { + singularName: 'article'; + pluralName: 'articles'; + displayName: 'Article'; + description: ''; + }; + options: { + draftAndPublish: true; + }; + attributes: { + titre: Attribute.String & Attribute.Required & Attribute.Unique; + top: Attribute.Boolean; + couverture: Attribute.Media & Attribute.Required; + fichiers: Attribute.Media; + contenu: Attribute.RichText & + Attribute.Required & + Attribute.CustomField< + 'plugin::ckeditor.CKEditor', + { + output: 'HTML'; + preset: 'rich'; + } + >; + date: Attribute.String; + createdAt: Attribute.DateTime; + updatedAt: Attribute.DateTime; + publishedAt: Attribute.DateTime; + createdBy: Attribute.Relation< + 'api::article.article', + 'oneToOne', + 'admin::user' + > & + Attribute.Private; + updatedBy: Attribute.Relation< + 'api::article.article', + 'oneToOne', + 'admin::user' + > & + Attribute.Private; + }; +} + export interface PluginUploadFile extends Schema.CollectionType { collectionName: 'files'; info: { @@ -590,6 +634,53 @@ export interface PluginContentReleasesReleaseAction }; } +export interface PluginI18NLocale extends Schema.CollectionType { + collectionName: 'i18n_locale'; + info: { + singularName: 'locale'; + pluralName: 'locales'; + collectionName: 'locales'; + displayName: 'Locale'; + description: ''; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Attribute.String & + Attribute.SetMinMax< + { + min: 1; + max: 50; + }, + number + >; + code: Attribute.String & Attribute.Unique; + createdAt: Attribute.DateTime; + updatedAt: Attribute.DateTime; + createdBy: Attribute.Relation< + 'plugin::i18n.locale', + 'oneToOne', + 'admin::user' + > & + Attribute.Private; + updatedBy: Attribute.Relation< + 'plugin::i18n.locale', + 'oneToOne', + 'admin::user' + > & + Attribute.Private; + }; +} + export interface PluginUsersPermissionsPermission extends Schema.CollectionType { collectionName: 'up_permissions'; @@ -741,53 +832,6 @@ export interface PluginUsersPermissionsUser extends Schema.CollectionType { }; } -export interface PluginI18NLocale extends Schema.CollectionType { - collectionName: 'i18n_locale'; - info: { - singularName: 'locale'; - pluralName: 'locales'; - collectionName: 'locales'; - displayName: 'Locale'; - description: ''; - }; - options: { - draftAndPublish: false; - }; - pluginOptions: { - 'content-manager': { - visible: false; - }; - 'content-type-builder': { - visible: false; - }; - }; - attributes: { - name: Attribute.String & - Attribute.SetMinMax< - { - min: 1; - max: 50; - }, - number - >; - code: Attribute.String & Attribute.Unique; - createdAt: Attribute.DateTime; - updatedAt: Attribute.DateTime; - createdBy: Attribute.Relation< - 'plugin::i18n.locale', - 'oneToOne', - 'admin::user' - > & - Attribute.Private; - updatedBy: Attribute.Relation< - 'plugin::i18n.locale', - 'oneToOne', - 'admin::user' - > & - Attribute.Private; - }; -} - declare module '@strapi/types' { export module Shared { export interface ContentTypes { @@ -798,14 +842,15 @@ declare module '@strapi/types' { 'admin::api-token-permission': AdminApiTokenPermission; 'admin::transfer-token': AdminTransferToken; 'admin::transfer-token-permission': AdminTransferTokenPermission; + 'api::article.article': ApiArticleArticle; 'plugin::upload.file': PluginUploadFile; 'plugin::upload.folder': PluginUploadFolder; 'plugin::content-releases.release': PluginContentReleasesRelease; 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; + 'plugin::i18n.locale': PluginI18NLocale; 'plugin::users-permissions.permission': PluginUsersPermissionsPermission; 'plugin::users-permissions.role': PluginUsersPermissionsRole; 'plugin::users-permissions.user': PluginUsersPermissionsUser; - 'plugin::i18n.locale': PluginI18NLocale; } } }