@paroicms/site-generator-plugin 0.6.0 → 0.7.0

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 (34) hide show
  1. package/gen-backend/dist/generator/fake-content-generator.ts/create-database-with-fake-content.js +1 -1
  2. package/gen-backend/dist/generator/fake-content-generator.ts/create-node-contents.js +10 -4
  3. package/gen-backend/dist/generator/llm-queries/invoke-update-site-schema.js +2 -1
  4. package/gen-backend/dist/generator/site-generator/document-template-creator.js +19 -2
  5. package/gen-backend/dist/generator/site-generator/template-helpers.js +5 -2
  6. package/gen-backend/dist/generator/site-schema-generator/create-site-schema.js +1 -1
  7. package/gen-backend/images/im01.webp +0 -0
  8. package/gen-backend/images/im02.webp +0 -0
  9. package/gen-backend/images/im03.webp +0 -0
  10. package/gen-backend/images/im04.webp +0 -0
  11. package/gen-backend/images/im05.webp +0 -0
  12. package/gen-backend/images/im06.webp +0 -0
  13. package/gen-backend/images/im07.webp +0 -0
  14. package/gen-backend/images/im08.webp +0 -0
  15. package/gen-backend/images/im09.webp +0 -0
  16. package/gen-backend/images/im10.webp +0 -0
  17. package/gen-backend/images/im11.webp +0 -0
  18. package/gen-backend/images/im12.webp +0 -0
  19. package/gen-backend/prompts/predefined-fields.json +25 -21
  20. package/gen-backend/prompts/update-site-schema-2-execute.md +2 -1
  21. package/gen-front/dist/gen-front.css +1 -1
  22. package/package.json +6 -6
  23. package/gen-backend/images/im01.jpg +0 -0
  24. package/gen-backend/images/im02.jpg +0 -0
  25. package/gen-backend/images/im03.jpg +0 -0
  26. package/gen-backend/images/im04.jpg +0 -0
  27. package/gen-backend/images/im05.jpg +0 -0
  28. package/gen-backend/images/im06.jpg +0 -0
  29. package/gen-backend/images/im07.jpg +0 -0
  30. package/gen-backend/images/im08.jpg +0 -0
  31. package/gen-backend/images/im09.jpg +0 -0
  32. package/gen-backend/images/im10.jpg +0 -0
  33. package/gen-backend/images/im11.jpg +0 -0
  34. package/gen-backend/images/im12.jpg +0 -0
@@ -114,7 +114,7 @@ async function updateSiteFields(ctx, options) {
114
114
  fields.push([
115
115
  "footerMention",
116
116
  {
117
- dataType: "quillDelta",
117
+ dataType: "json",
118
118
  localized: true,
119
119
  value: generateLocalizedFooterMention(siteSchema),
120
120
  },
@@ -66,7 +66,7 @@ function toRiFieldContent(options) {
66
66
  value: generatedValue,
67
67
  };
68
68
  }
69
- if (fieldType.dataType === "quillDelta" && isMarkdown) {
69
+ if (fieldType.dataType === "json" && fieldType.renderAs === "html" && isMarkdown) {
70
70
  return toRiQuillDeltaContent(generatedValue);
71
71
  }
72
72
  }
@@ -123,15 +123,19 @@ function toRiFieldContent(options) {
123
123
  };
124
124
  }
125
125
  }
126
+ if (fieldType.storedAs === "labeling")
127
+ return; // TODO: Generate values for labeling fields
126
128
  }
127
129
  function toRiQuillDeltaContent(content) {
128
130
  return {
129
- dataType: "quillDelta",
131
+ dataType: "json",
130
132
  localized: true,
131
133
  value: Object.fromEntries(Object.entries(content).map(([language, text]) => [
132
134
  language,
133
135
  {
134
- ops: markdownToDelta(text),
136
+ j: {
137
+ ops: markdownToDelta(text),
138
+ },
135
139
  },
136
140
  ])),
137
141
  };
@@ -150,7 +154,9 @@ export function generateLocalizedFooterMention(siteSchema) {
150
154
  return Object.fromEntries(languages.map((language) => [
151
155
  language,
152
156
  {
153
- ops: markdownToDelta(`Powered by ParoiCMS in ${languageLabels[language]}`),
157
+ j: {
158
+ ops: markdownToDelta(`Powered by ParoiCMS in ${languageLabels[language]}`),
159
+ },
154
160
  },
155
161
  ]));
156
162
  }
@@ -107,7 +107,8 @@ async function invokeUpdateSiteSchemaStep2(ctx, input) {
107
107
  function fixSiteSchema(siteSchema) {
108
108
  for (const nodeType of siteSchema.nodeTypes ?? []) {
109
109
  for (const field of nodeType.fields ?? []) {
110
- if (typeof field !== "string" && field.dataType === "quillDelta") {
110
+ if (typeof field !== "string" && field.renderAs === "html") {
111
+ field.dataType = "json";
111
112
  field.plugin = "@paroicms/quill-editor-plugin";
112
113
  }
113
114
  }
@@ -164,8 +164,25 @@ function templateOfFields(ctx, fields, { parentKey }) {
164
164
  }
165
165
  function templateOfField(ctx, fieldOrName, parentKey) {
166
166
  const fieldName = typeof fieldOrName === "string" ? fieldOrName : fieldOrName.name;
167
- const dataType = typeof fieldOrName === "string" ? getPredefinedDataType(ctx, fieldName) : fieldOrName.dataType;
168
- if (dataType === "html" || dataType === "quillDelta") {
167
+ const { dataType, renderAs } = typeof fieldOrName === "string"
168
+ ? getPredefinedDataType(ctx, fieldName)
169
+ : fieldOrName.storedAs === "labeling"
170
+ ? { dataType: "labeling" }
171
+ : fieldOrName;
172
+ if (dataType === "labeling") {
173
+ return `{% if ${parentKey}.${fieldName} %}
174
+ <div class="Field">
175
+ {% for tag in ${parentKey}.${fieldName} %}
176
+ {% if tag.inRightLanguage %}
177
+ <a href="{{ tag.url }}">{{ tag.title }}</a>
178
+ {% else %}
179
+ <span>{{ tag.title }}</span>
180
+ {% endif %}
181
+ {% endfor %}
182
+ </div>
183
+ {% endif %}`;
184
+ }
185
+ if (renderAs === "html") {
169
186
  return `<div class="Field Text">{{ ${parentKey}.${fieldName} | raw }}</div>`;
170
187
  }
171
188
  if (dataType === "date") {
@@ -11,8 +11,11 @@ export function indent(template, level, { skipFirst = false } = {}) {
11
11
  export function getPredefinedDataType(ctx, fieldName) {
12
12
  const predefinedField = ctx.predefinedFields.get(fieldName);
13
13
  if (!predefinedField)
14
- return "string";
15
- return predefinedField.dataType;
14
+ return { dataType: "string", renderAs: undefined };
15
+ return {
16
+ dataType: predefinedField.dataType,
17
+ renderAs: predefinedField.renderAs,
18
+ };
16
19
  }
17
20
  export function localizedLabelTemplate(ctx, label) {
18
21
  const { siteSchema, setLocalizedLabel: appendLocalizedLabel } = ctx;
@@ -2,7 +2,7 @@ import { generateSlug } from "@paroicms/public-anywhere-lib";
2
2
  export function createSiteSchemaFromAnalysis(analysis) {
3
3
  const { siteProperties } = analysis;
4
4
  const siteSchema = {
5
- version: "7",
5
+ version: "8",
6
6
  languages: [siteProperties.language],
7
7
  plugins: [
8
8
  "@paroicms/quill-editor-plugin",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,110 +1,114 @@
1
1
  [
2
2
  {
3
3
  "fieldName": "leadParagraph",
4
- "dataType": "quillDelta",
5
4
  "localized": true,
5
+ "dataType": "json",
6
+ "renderAs": "html",
6
7
  "description": "Lead paragraph, or \"chapo\", of a post (HTML)"
7
8
  },
8
9
  {
9
10
  "fieldName": "htmlContent",
10
- "dataType": "quillDelta",
11
11
  "localized": true,
12
+ "dataType": "json",
13
+ "renderAs": "html",
12
14
  "description": "HTML Content"
13
15
  },
14
16
  {
15
17
  "fieldName": "introduction",
16
- "dataType": "quillDelta",
17
18
  "localized": true,
19
+ "dataType": "json",
20
+ "renderAs": "html",
18
21
  "description": "A short introduction (HTML)"
19
22
  },
20
23
  {
21
24
  "fieldName": "footerMention",
22
- "dataType": "quillDelta",
25
+ "dataType": "json",
26
+ "renderAs": "html",
23
27
  "localized": true,
24
28
  "description": "The footer mention is used to display a legal notice or a disclaimer (HTML). Usually included as a site field."
25
29
  },
26
30
  {
27
31
  "fieldName": "logo",
28
- "dataType": "media",
29
32
  "localized": false,
33
+ "dataType": "media",
30
34
  "description": "A logo is an image that represents a brand"
31
35
  },
32
36
  {
33
37
  "fieldName": "slogan",
34
- "dataType": "string",
35
38
  "localized": true,
39
+ "dataType": "string",
36
40
  "description": "A slogan is a memorable motto or phrase as a repetitive expression of an idea or purpose"
37
41
  },
38
42
  {
39
43
  "fieldName": "phone",
40
- "dataType": "string",
41
44
  "localized": false,
45
+ "dataType": "string",
42
46
  "description": "Phone number"
43
47
  },
44
48
  {
45
49
  "fieldName": "phone2",
46
- "dataType": "string",
47
50
  "localized": false,
51
+ "dataType": "string",
48
52
  "description": "Secondary phone number"
49
53
  },
50
54
  {
51
55
  "fieldName": "title",
52
- "dataType": "string",
53
56
  "localized": true,
57
+ "dataType": "string",
54
58
  "description": "Store a title"
55
59
  },
56
60
  {
57
61
  "fieldName": "shortTitle",
58
- "dataType": "string",
59
62
  "localized": true,
63
+ "dataType": "string",
60
64
  "description": "A short title can be useful for buttons or menu items"
61
65
  },
62
66
  {
63
67
  "fieldName": "gallery",
64
- "dataType": "gallery",
65
68
  "localized": false,
69
+ "dataType": "gallery",
66
70
  "description": "A collection of medias. It can be rendered as a carousel, a slider, a slideshow, an image gallery etc."
67
71
  },
68
72
  {
69
73
  "fieldName": "image",
70
- "dataType": "media",
71
74
  "localized": false,
75
+ "dataType": "media",
72
76
  "description": "An image"
73
77
  },
74
78
  {
75
79
  "fieldName": "backgroundImage",
76
- "dataType": "media",
77
80
  "localized": false,
81
+ "dataType": "media",
78
82
  "description": "A background image"
79
83
  },
80
84
  {
81
85
  "fieldName": "translatedImage",
82
- "dataType": "media",
83
86
  "localized": true,
87
+ "dataType": "media",
84
88
  "description": "Image that will be different depending on the language (localized)"
85
89
  },
86
90
  {
87
91
  "fieldName": "featuredDocument",
88
- "dataType": "string",
89
92
  "localized": false,
93
+ "dataType": "string",
90
94
  "description": "A link to a featured document"
91
95
  },
92
96
  {
93
97
  "fieldName": "phones",
94
- "dataType": "json",
95
98
  "localized": false,
99
+ "dataType": "json",
96
100
  "description": "A list of phone numbers"
97
101
  },
98
102
  {
99
103
  "fieldName": "video",
100
- "dataType": "string",
101
104
  "localized": false,
102
- "description": "A Youtube video"
105
+ "dataType": "string",
106
+ "description": "A YouTube video"
103
107
  },
104
108
  {
105
- "fieldName": "translatedVideo",
106
- "dataType": "string",
109
+ "fieldName": "oneLanguageVideo",
107
110
  "localized": true,
108
- "description": "A Youtube video with translations"
111
+ "dataType": "string",
112
+ "description": "A YouTube video, but different for each language"
109
113
  }
110
114
  ]
@@ -23,7 +23,8 @@ Here is an example of an object for describing a custom **HTML** field type:
23
23
  "name": "myCustomField",
24
24
  "localized": true,
25
25
  "storedAs": "text",
26
- "dataType": "quillDelta",
26
+ "dataType": "json",
27
+ "renderAs": "html",
27
28
  "useAsExcerpt": 1,
28
29
  "plugin": "@paroicms/quill-editor-plugin"
29
30
  }}