Commit 52011266 authored by Oleg Nikolaev's avatar Oleg Nikolaev
Browse files

Add logic for global site services blocks

parent 8b09a388
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
{
  "latest": "5.12.4",
  "lastUpdateCheck": 1744719394746,
  "lastNotification": 1744262491140
  "latest": "5.12.5",
  "lastUpdateCheck": 1744806284674,
  "lastNotification": 1744867304898
}
+9 −1
Original line number Diff line number Diff line
import { CUSTOM_REQUEST_HEADERS } from "../src/lib/constants/custom-headers";

// TODO: Setup cors
export default [
  "strapi::logger",
  "strapi::errors",
  "strapi::security",
  "strapi::cors",
  {
    name: "strapi::cors",
    config: {
      headers: [CUSTOM_REQUEST_HEADERS.brand],
    },
  },
  "strapi::poweredBy",
  "strapi::query",
  "strapi::body",
+15 −6
Original line number Diff line number Diff line
@@ -17,11 +17,6 @@
      "component": "page-block.banner",
      "required": false
    },
    "breadcrumb": {
      "type": "component",
      "repeatable": false,
      "component": "page-block.breadcrumb"
    },
    "site": {
      "type": "relation",
      "relation": "oneToOne",
@@ -30,8 +25,22 @@
    },
    "dynamicBlocks": {
      "type": "dynamiczone",
      "components": ["page-block.cards-list"],
      "components": [
        "page-block.cards-list",
        "page-block.section-with-services-cards"
      ],
      "min": 1
    },
    "pageTitle": {
      "type": "string",
      "required": true,
      "default": "Корпоративным клиентам"
    },
    "pagePreviewImage": {
      "type": "media",
      "multiple": false,
      "required": false,
      "allowedTypes": ["images", "files"]
    }
  }
}
+4 −43
Original line number Diff line number Diff line
@@ -5,53 +5,14 @@
import { Context } from "koa";

import { factories } from "@strapi/strapi";
import { CUSTOM_REQUEST_HEADERS } from "../../../lib/constants/custom-headers";
import {
  bannerComponentRetrievingConfig,
  formatBanner,
} from "../../../lib/api-utils/data-retrieving-configs/banner";
import {
  breadcrumbComponentRetrievingConfig,
  formatBreadcrumb,
} from "../../../lib/api-utils/data-retrieving-configs/breadcrumb";
import {
  dynamicBlocksRetrievingConfig,
  formatDynamicBlocks,
} from "../../../lib/api-utils/data-retrieving-configs/dynamic-blocks";

export default factories.createCoreController(
  "api::corporate-sales-page.corporate-sales-page",
  ({ strapi }) => ({
    async getCorporateSalesPage(ctx: Context) {
      const corporateSalesPage = await strapi
        .documents("api::corporate-sales-page.corporate-sales-page")
        .findFirst({
          filters: {
            site: {
              documentId: ctx.request.headers[
                CUSTOM_REQUEST_HEADERS.siteDocumentId
              ] as string,
            },
          },
          fields: [],
          populate: {
            banner: bannerComponentRetrievingConfig,
            breadcrumb: breadcrumbComponentRetrievingConfig,
            dynamicBlocks: dynamicBlocksRetrievingConfig,
          },
        });

      if (!corporateSalesPage) {
        return ctx.notFound("Page not found");
      }

      const responseBody = {
        banner: formatBanner(corporateSalesPage.banner),
        breadcrumb: formatBreadcrumb(corporateSalesPage.breadcrumb),
        dynamicBlocks: formatDynamicBlocks(corporateSalesPage.dynamicBlocks),
      };

      ctx.body = responseBody;
    getCorporateSalesPage(ctx: Context) {
      return strapi
        .service("api::corporate-sales-page.corporate-sales-page")
        .getPage(ctx);
    },
  }),
);
+12 −0
Original line number Diff line number Diff line
import { factories } from "@strapi/strapi";
import {
  generateGetServiceBaseInfo,
  generateGetServiceData,
} from "../../../lib/api-utils/service-methods-generators/generate-service-methods";

const serviceApiKey = "api::corporate-sales-page.corporate-sales-page";

export default factories.createCoreService(serviceApiKey, ({ strapi }) => ({
  getPage: generateGetServiceData(strapi, serviceApiKey),
  getPageBaseInfo: generateGetServiceBaseInfo(strapi, serviceApiKey),
}));
Loading