@webbio/strapi-plugin-page-builder 0.3.1 → 0.3.3-legacy

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +21 -6
  2. package/admin/src/api/collection-type.ts +1 -7
  3. package/admin/src/components/EditView/CollectionTypeSearch/index.tsx +11 -14
  4. package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/index.tsx +27 -9
  5. package/admin/src/components/EditView/CollectionTypeSettings/index.tsx +16 -6
  6. package/admin/src/components/EditView/Details/index.tsx +1 -1
  7. package/admin/src/components/EditView/PageSettings/index.tsx +6 -57
  8. package/admin/src/components/PageTypeFilter/index.tsx +17 -0
  9. package/admin/src/components/PageTypeFilter/page-type-filter.tsx +130 -0
  10. package/admin/src/index.tsx +2 -2
  11. package/admin/src/utils/sanitizeModules.ts +92 -9
  12. package/dist/package.json +11 -9
  13. package/dist/server/bootstrap.js +24 -40
  14. package/dist/server/content-types/user-categories/schema.json +18 -0
  15. package/dist/server/content-types/user-category/schema.json +23 -0
  16. package/dist/server/controllers/index.js +1 -3
  17. package/dist/server/controllers/platform.js +5 -5
  18. package/dist/server/controllers/private-content.js +18 -0
  19. package/dist/server/controllers/sitemap.js +29 -0
  20. package/dist/server/controllers/user-category.js +4 -0
  21. package/dist/server/graphql/page-by-path.js +113 -0
  22. package/dist/server/graphql/pages-by-uid.js +7 -9
  23. package/dist/server/policies/isAuthorizedPage.js +11 -0
  24. package/dist/server/routes/index.js +0 -21
  25. package/dist/server/routes/user-category.js +4 -0
  26. package/dist/server/schema/page-end.json +0 -5
  27. package/dist/server/schema/platform-start.json +0 -10
  28. package/dist/server/schema/template-end.json +40 -0
  29. package/dist/server/services/builder.js +8 -18
  30. package/dist/server/services/email.js +160 -0
  31. package/dist/server/services/index.js +1 -3
  32. package/dist/server/services/platform.js +6 -11
  33. package/dist/server/services/private-content/components/admin-email.json +22 -0
  34. package/dist/server/services/private-content/components/email.json +22 -0
  35. package/dist/server/services/private-content/components/platform-email.json +33 -0
  36. package/dist/server/services/private-content/constants/index.js +16 -0
  37. package/dist/server/services/private-content/graphql/index.js +77 -0
  38. package/dist/server/services/private-content/graphql/resolvers/findOnePage.js +40 -0
  39. package/dist/server/services/private-content/graphql/resolvers/findPage.js +44 -0
  40. package/dist/server/services/private-content/graphql/resolvers/forgot-password.js +29 -0
  41. package/dist/server/services/private-content/graphql/resolvers/login.js +49 -0
  42. package/dist/server/services/private-content/graphql/resolvers/register.js +68 -0
  43. package/dist/server/services/private-content/graphql/resolvers/reset-password.js +41 -0
  44. package/dist/server/services/private-content/graphql/types/index.js +89 -0
  45. package/dist/server/services/private-content/index.js +94 -0
  46. package/dist/server/services/private-content/mail-template/txtMail.email.template.text.js +12 -0
  47. package/dist/server/services/private-content/page.js +22 -0
  48. package/dist/server/services/private-content/platform.js +22 -0
  49. package/dist/server/services/private-content/schemas/index.js +30 -0
  50. package/dist/server/services/private-content/user.js +170 -0
  51. package/dist/server/services/sitemap.js +78 -0
  52. package/dist/server/services/template.js +1 -2
  53. package/dist/server/services/user-category.js +4 -0
  54. package/dist/server/utils/strapi.js +1 -4
  55. package/dist/shared/utils/constants.js +1 -3
  56. package/dist/tsconfig.server.tsbuildinfo +1 -1
  57. package/package.json +11 -9
  58. package/server/bootstrap/collection-type-lifecycles.ts +1 -1
  59. package/server/bootstrap.ts +24 -43
  60. package/server/controllers/index.ts +1 -3
  61. package/server/graphql/pages-by-uid.ts +7 -9
  62. package/server/routes/index.ts +0 -21
  63. package/server/schema/page-end.json +0 -5
  64. package/server/services/builder.ts +8 -20
  65. package/server/services/index.ts +1 -3
  66. package/server/services/template.ts +1 -2
  67. package/server/utils/strapi.ts +1 -5
  68. package/shared/utils/constants.ts +0 -2
  69. package/admin/src/api/platform.ts +0 -34
  70. package/admin/src/components/EditView/Platform/platform-select.tsx +0 -30
  71. package/admin/src/components/PageFilters/PageTypeFilter/index.tsx +0 -39
  72. package/admin/src/components/PageFilters/PlatformFilter/index.tsx +0 -28
  73. package/admin/src/components/PageFilters/filters.tsx +0 -180
  74. package/admin/src/components/PageFilters/index.tsx +0 -30
  75. package/server/controllers/platform.ts +0 -21
  76. package/server/schema/platform-start.json +0 -31
  77. package/server/services/platform.ts +0 -36
@@ -1,180 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import set from 'lodash/set';
3
-
4
- import { Stack } from '@strapi/design-system';
5
- import { useQueryParams } from '@strapi/helper-plugin';
6
-
7
- import PageTypeFilter from './PageTypeFilter';
8
- import { PAGE_TYPE_PAGE, PLATFORM } from '../../../../shared/utils/constants';
9
- import PlatformFilter from './PlatformFilter';
10
- import { Platform, useGetPlatforms } from '../../api/platform';
11
- import { PAGE_TYPE, PAGE_TYPE_NO_FILTER, PLATFORM_NO_FILTER } from '../../constants';
12
- import { PageType } from '../../api/page-type';
13
-
14
- interface PageFiltersProps {
15
- hidePageType?: boolean;
16
- }
17
-
18
- const PageFilters = ({ hidePageType }: PageFiltersProps) => {
19
- const [{ query }, setQuery] = useQueryParams() as any;
20
-
21
- const { data: platforms } = useGetPlatforms({});
22
-
23
- const selectedPlatformTitle = useMemo(() => getPlatformFromQuery(query, platforms), [query, platforms]);
24
- const selectedPageTypeUid = useMemo(
25
- () => getPageTypeFromQuery(query, getPageTypesFromPlatformTitle(selectedPlatformTitle, platforms)),
26
- [query, platforms, selectedPlatformTitle]
27
- );
28
-
29
- const handleFilterChange = (
30
- filters: Record<string, any>,
31
- filterCategory: string,
32
- filterCategoryToRemove?: string
33
- ) => {
34
- const currentFilters = query.filters?.$and ? query.filters : { ...query.filters, $and: [] };
35
- const filterIndex = currentFilters.$and.findIndex(
36
- (x?: Record<string, any>) => Object.keys(x || {})?.[0] === filterCategory
37
- );
38
-
39
- if (filterIndex > -1) {
40
- set(currentFilters, `$and[${filterIndex}]`, filters); // If the filter in this category already exists, replace it
41
- } else {
42
- currentFilters.$and.push(filters);
43
- }
44
-
45
- const removedFilters = removeFiltersFromQuery({ filters: currentFilters }, filterCategoryToRemove);
46
-
47
- setQuery({
48
- page: 1,
49
- filters: removedFilters
50
- });
51
- };
52
-
53
- const removeFilters = (filterCategory: string) => {
54
- const filters = removeFiltersFromQuery(query, filterCategory);
55
-
56
- setQuery({
57
- page: 1,
58
- filters
59
- });
60
- };
61
-
62
- const handlePlatformSelect = (platformId: string) => {
63
- if (platformId === PLATFORM_NO_FILTER) {
64
- removeFilters(PLATFORM);
65
- return;
66
- }
67
-
68
- handleFilterChange(getPlatformQueryFilter(platformId), PLATFORM, PAGE_TYPE);
69
- };
70
-
71
- const handlePageTypeSelect = (pageType: string) => {
72
- if (pageType === PAGE_TYPE_NO_FILTER) {
73
- removeFilters(PAGE_TYPE);
74
- return;
75
- }
76
-
77
- if (pageType === PAGE_TYPE_PAGE) {
78
- handleFilterChange(nullPageTypeQueryFilter, PAGE_TYPE);
79
- return;
80
- }
81
-
82
- handleFilterChange(getPageTypeQueryFilter(pageType), PAGE_TYPE);
83
- };
84
-
85
- return (
86
- <Stack horizontal spacing={2}>
87
- <PlatformFilter onChange={handlePlatformSelect} platforms={platforms} selectedPlatform={selectedPlatformTitle} />
88
- {!hidePageType && (
89
- <PageTypeFilter
90
- onChange={handlePageTypeSelect}
91
- pageTypes={getPageTypesFromPlatformTitle(selectedPlatformTitle, platforms)}
92
- selectedPageTypeUid={selectedPageTypeUid}
93
- />
94
- )}
95
- </Stack>
96
- );
97
- };
98
-
99
- export default PageFilters;
100
-
101
- const getPageTypesFromPlatformTitle = (selectedPlatformTitle?: string, platforms?: Platform[]) =>
102
- platforms?.find((p) => p.title === selectedPlatformTitle)?.pageTypes;
103
-
104
- const getPageTypeFromQuery = (query: Record<string, any>, pageTypes?: PageType[]) => {
105
- const pageTypeFromQuery = query?.filters?.$and?.find(
106
- (x?: Record<string, any>) => Object.keys(x || {})?.[0] === PAGE_TYPE
107
- )?.pageType;
108
-
109
- if (pageTypeFromQuery?.uid?.$null === 'true') {
110
- return PAGE_TYPE_PAGE;
111
- }
112
-
113
- if (pageTypeFromQuery?.uid?.$eq) {
114
- const matchingPageType = pageTypes?.find((pageType: any) => pageType?.uid === pageTypeFromQuery.uid.$eq);
115
-
116
- if (matchingPageType) {
117
- return matchingPageType.uid;
118
- }
119
- }
120
-
121
- return PAGE_TYPE_NO_FILTER;
122
- };
123
-
124
- const getPlatformFromQuery = (query: Record<string, any>, platforms?: Platform[]): string | undefined => {
125
- const platformFromQuery = query?.filters?.$and?.find(
126
- (x?: Record<string, any>) => Object.keys(x || {})?.[0] === PLATFORM
127
- )?.platform;
128
-
129
- if (platformFromQuery?.title?.$null === 'true') {
130
- return PLATFORM_NO_FILTER;
131
- }
132
-
133
- if (platformFromQuery?.title?.$eq) {
134
- const matchingPageType = platforms?.find((platforms: Platform) => platforms?.title === platformFromQuery.title.$eq);
135
-
136
- if (matchingPageType) {
137
- return matchingPageType.title;
138
- }
139
- }
140
-
141
- return PLATFORM_NO_FILTER;
142
- };
143
-
144
- const getPlatformQueryFilter = (platform: string) => ({
145
- platform: {
146
- title: {
147
- $eq: platform
148
- }
149
- }
150
- });
151
-
152
- const getPageTypeQueryFilter = (pageType: string) => ({
153
- pageType: {
154
- uid: {
155
- $eq: pageType
156
- }
157
- }
158
- });
159
-
160
- const nullPageTypeQueryFilter = {
161
- pageType: {
162
- uid: {
163
- $null: true
164
- }
165
- }
166
- };
167
-
168
- const removeFiltersFromQuery = (query: Record<string, any>, filterCategory?: string) => {
169
- const newAndFilters = query.filters?.$and?.filter(
170
- (x?: Record<string, any>) => Object.keys(x || {})?.[0] !== filterCategory
171
- );
172
-
173
- const filters = { ...query.filters, $and: newAndFilters };
174
-
175
- if (newAndFilters && newAndFilters.length === 0) {
176
- delete filters.$and;
177
- }
178
-
179
- return filters;
180
- };
@@ -1,30 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useLocation } from 'react-router-dom';
4
-
5
- import { PAGE_UID } from '../../../../shared/utils/constants';
6
-
7
- import PageFilters from './filters';
8
- import { useHasPageRelation } from '../../api/has-page-relation';
9
-
10
- const PageFiltersContainer = () => {
11
- const { pathname } = useLocation();
12
- const uid = pathname.split('/').find((x) => x.startsWith('api::')) || '';
13
- const isPageCollectionType = uid === PAGE_UID;
14
-
15
- const { data: hasPageRelation, isLoading } = useHasPageRelation({
16
- uid
17
- });
18
-
19
- if (isPageCollectionType) {
20
- return <PageFilters />;
21
- }
22
-
23
- if (!isPageCollectionType && hasPageRelation && !isLoading) {
24
- return <PageFilters hidePageType />;
25
- }
26
-
27
- return null;
28
- };
29
-
30
- export default PageFiltersContainer;
@@ -1,21 +0,0 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default {
4
- async findAll() {
5
- return await (strapi as Strapi).service('plugin::page-builder.platform').findAll();
6
- },
7
-
8
- async findOneByUid(ctx: any) {
9
- const uid = ctx?.params?.uid;
10
-
11
- if (!uid) {
12
- return ctx.badRequest('uid is missing.');
13
- }
14
-
15
- return await strapi.service('plugin::page-builder.platform').findOneByUid(uid);
16
- },
17
- async findPageTypesByPlatform(ctx: any) {
18
- const platform = ctx?.params?.platform;
19
- return await (strapi as Strapi).services['plugin::page-builder.platform'].findPageTypesByPlatform(platform);
20
- }
21
- };
@@ -1,31 +0,0 @@
1
- {
2
- "draftAndPublish": false,
3
- "displayName": "Platforms",
4
- "singularName": "platform",
5
- "pluralName": "platforms",
6
- "description": "",
7
- "plugin": "page-builder",
8
- "pluginOptions": {},
9
- "kind": "collectionType",
10
- "collectionName": "platforms",
11
- "attributes": {
12
- "title": {
13
- "type": "string",
14
- "required": true,
15
- "unique": true
16
- },
17
- "domain": {
18
- "type": "string"
19
- },
20
- "template": {
21
- "type": "relation",
22
- "relation": "oneToMany",
23
- "target": "api::template.template"
24
- },
25
- "pageTypes": {
26
- "type": "relation",
27
- "relation": "oneToMany",
28
- "target": "api::page-type.page-type"
29
- }
30
- }
31
- }
@@ -1,36 +0,0 @@
1
- import { Common } from '@strapi/strapi';
2
- import { PLATFORM_UID } from '../../shared/utils/constants';
3
-
4
- export default {
5
- async findAll() {
6
- return await strapi.entityService.findMany(PLATFORM_UID, { populate: '*' });
7
- },
8
- async findOneByUid(uid: Common.UID.ContentType) {
9
- return await strapi.entityService.findMany(PLATFORM_UID, {
10
- populate: '*',
11
- filters: {
12
- pagetype: {
13
- uid
14
- }
15
- }
16
- });
17
- },
18
- async findPageTypesByPlatform(platform: string) {
19
- const results = await strapi.entityService.findMany(PLATFORM_UID, {
20
- populate: {
21
- pagetype: true
22
- },
23
- filters: {
24
- title: {
25
- $eq: platform
26
- }
27
- }
28
- });
29
-
30
- if ((results as any[]).length > 0) {
31
- return results;
32
- } else {
33
- return null;
34
- }
35
- }
36
- };