Add board feature

This commit is contained in:
julien vdb
2025-03-28 14:52:43 +01:00
parent 9d4ecb2733
commit c6d5936639
23 changed files with 3485 additions and 11 deletions
@@ -0,0 +1,59 @@
{
"kind": "collectionType",
"collectionName": "board_cards",
"info": {
"singularName": "board-card",
"pluralName": "board-cards",
"displayName": "BoardCard",
"description": ""
},
"options": {
"draftAndPublish": false
},
"pluginOptions": {},
"attributes": {
"title": {
"type": "string"
},
"description": {
"type": "text"
},
"order": {
"type": "integer"
},
"boardList": {
"type": "relation",
"relation": "manyToOne",
"target": "api::board-list.board-list",
"inversedBy": "cards"
},
"image": {
"type": "media",
"multiple": false,
"required": false,
"allowedTypes": [
"images",
"files",
"videos",
"audios"
]
},
"type": {
"type": "enumeration",
"enum": [
"link",
"youtube",
"image",
"video",
"audio",
"pdf"
]
},
"url": {
"type": "string"
},
"imageUrl": {
"type": "string"
}
}
}
@@ -0,0 +1,53 @@
/**
* board-card controller
*/
import { factories } from "@strapi/strapi";
export default factories.createCoreController(
"api::board-card.board-card",
({ strapi }) => ({
async delete(ctx) {
// some logic here
const response = await super.delete(ctx);
// some more logic
return response;
},
async create(ctx) {
ctx.request.body.data = JSON.parse(ctx.request.body.data);
switch (ctx.request.body.data.type) {
case "link":
case "image":
case "video":
case "audio":
case "pdf":
const files = Array.isArray(ctx.request.files.files)
? ctx.request.files.files[0]
: ctx.request.files.files;
const extension = files.originalFilename.match(/\.[0-9a-z]+$/i);
const payload = {
fileInfo: {
caption: "undefined",
alternativeText: ctx.request.body.data.title || "",
name: `${ctx.request.body.data.title}.${extension}`,
},
};
const asset = await strapi.services["plugin::upload.upload"].upload({
data: payload,
files,
});
ctx.request.body.data.image = asset[0].id;
break;
case "youtube":
const image = ctx.request.body.image;
ctx.request.body.data.imageUrl = image;
break;
}
const { data, meta } = await super.create(ctx);
return { data, meta };
},
})
);
+7
View File
@@ -0,0 +1,7 @@
/**
* board-card router
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::board-card.board-card');
@@ -0,0 +1,7 @@
/**
* board-card service
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreService('api::board-card.board-card');