Skip to content

Commit 515336e

Browse files
committed
fix: update HTML method to accept organization and language parameters for improved rendering
1 parent b860e08 commit 515336e

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

src/index.js

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class CoCreateServerSideRender {
77
this.crud = crud;
88
}
99

10-
async HTML(file) {
10+
async HTML(file, organization, urlObject, langRegion, lang) {
1111
const self = this;
1212
let ignoreElement = {
1313
INPUT: true,
@@ -21,7 +21,7 @@ class CoCreateServerSideRender {
2121
let dep = [];
2222
let dbCache = new Map();
2323
let organization_id = file.organization_id;
24-
const host = file.urlObject.hostname;
24+
const host = urlObject.hostname;
2525

2626
async function render(dom, lastKey) {
2727
// Handle elements with [array][key][object]
@@ -168,12 +168,16 @@ class CoCreateServerSideRender {
168168

169169
let dom = parse(file.src);
170170
dom = await render(dom, "root");
171-
if (file.langRegion || file.lang) {
172-
dom = await this.translate(dom, file);
171+
if (langRegion || lang) {
172+
dom = await this.translate(dom, file, langRegion, lang);
173173
}
174174

175-
if (file.languages && file.languages.length > 0) {
176-
let langLinkTags = this.createLanguageLinkTags(file);
175+
if (organization.languages && organization.languages.length > 0) {
176+
let langLinkTags = this.createLanguageLinkTags(
177+
file,
178+
organization,
179+
urlObject
180+
);
177181
const head = dom.querySelector("head");
178182
if (head && langLinkTags) {
179183
const linksFragment = parse(langLinkTags);
@@ -186,26 +190,24 @@ class CoCreateServerSideRender {
186190
}
187191
}
188192
}
189-
193+
190194
dep = [];
191195
dbCache.clear();
192196
return dom.toString();
193-
};
197+
}
194198

195-
createLanguageLinkTags(file) {
196-
let generatedLinksString = `<link rel="alternate" hreflang="x-default" href="https://${file.urlObject.hostname}${file.pathname}">\n`;
199+
createLanguageLinkTags(file, organization, urlObject) {
200+
let generatedLinksString = `<link rel="alternate" hreflang="x-default" href="https://${urlObject.hostname}${file.pathname}">\n`;
197201

198-
for (const language of file.languages) {
202+
for (const language of organization.languages) {
199203
let langPath = `/${language}${file.pathname}`;
200-
const hrefUrl = `https://${file.urlObject.hostname}${langPath}`;
204+
const hrefUrl = `https://${urlObject.hostname}${langPath}`;
201205
generatedLinksString += `<link rel="alternate" hreflang="${language}" href="${hrefUrl}">\n`;
202206
}
203207
return generatedLinksString;
204208
}
205209

206-
async translate(dom, file) {
207-
let langRegion = file.langRegion;
208-
let lang = file.lang;
210+
async translate(dom, file, langRegion, lang) {
209211
if (file.translations && (langRegion || lang)) {
210212
for (let translation of file.translations) {
211213
let elements = dom.querySelectorAll(translation.selector) || [];
@@ -220,10 +222,11 @@ class CoCreateServerSideRender {
220222
}
221223
}
222224
if (translation.attributes) {
223-
for (let [key, language] of Object.entries(
225+
for (let [key, languageObj] of Object.entries(
224226
translation.attributes
225227
)) {
226-
let value = language[langRegion] || language[lang];
228+
let value =
229+
languageObj[langRegion] || languageObj[lang];
227230
if (value) {
228231
el.setAttribute(key, value);
229232
}

0 commit comments

Comments
 (0)