diff --git a/package-lock.json b/package-lock.json
index 2fecd27..3c05d20 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,6 +32,7 @@
"markdown-it": "^14.0.0",
"markdown-it-attrs": "^4.1.6",
"memfs": "^4.11.1",
+ "mime-types": "^2.1.35",
"multer": "^1.4.5-lts.1",
"ollama": "^0.5.8",
"playwright": "*",
@@ -49,6 +50,7 @@
"@types/luxon": "^3.4.2",
"@types/markdown-it": "^14.1.1",
"@types/markdown-it-attrs": "^4.1.3",
+ "@types/mime-types": "^2.1.4",
"@types/multer": "^1.4.11",
"@types/node": "^20.0.0",
"ts-node": "^10.9.2",
@@ -2829,6 +2831,12 @@
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
"dev": true
},
+ "node_modules/@types/mime-types": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz",
+ "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==",
+ "dev": true
+ },
"node_modules/@types/ms": {
"version": "0.7.34",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
diff --git a/package.json b/package.json
index 27197dd..44d3aed 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,7 @@
"markdown-it": "^14.0.0",
"markdown-it-attrs": "^4.1.6",
"memfs": "^4.11.1",
+ "mime-types": "^2.1.35",
"multer": "^1.4.5-lts.1",
"ollama": "^0.5.8",
"playwright": "*",
@@ -56,6 +57,7 @@
"@types/luxon": "^3.4.2",
"@types/markdown-it": "^14.1.1",
"@types/markdown-it-attrs": "^4.1.3",
+ "@types/mime-types": "^2.1.4",
"@types/multer": "^1.4.11",
"@types/node": "^20.0.0",
"ts-node": "^10.9.2",
diff --git a/src/components/Content.astro b/src/components/Content.astro
index 8554570..856a8af 100644
--- a/src/components/Content.astro
+++ b/src/components/Content.astro
@@ -14,7 +14,8 @@ const { editToken, text } = Astro.props;
.content {
margin-bottom: 2rem;
border: 1px solid rgba(var(--accent-light), 25%);
- background: linear-gradient(rgba(var(--accent-dark), 66%), rgba(var(--accent-dark), 33%));
+ /* background: linear-gradient(rgba(var(--accent-dark), 66%), rgba(var(--accent-dark), 33%)); */
+ background-color: #13151a;
padding: 0.5rem;
border-radius: 8px;
font-family: "Urbanist", sans-serif;
@@ -23,4 +24,10 @@ const { editToken, text } = Astro.props;
}
a, a:link, a:visited { text-decoration: none; color: #fff }
a:hover { text-decoration: underline; color: #fff }
+
+
+
\ No newline at end of file
diff --git a/src/config.ts b/src/config.ts
index 25231a6..4a78938 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -78,8 +78,8 @@ export const getWebhookPort = () => env.WEBHOOK_PORT ? parseInt(env.WEBHOOK_PORT
export const getSquidexAppName = () => env.SQUIDEX_APP_NAME || undefined;
export const getSquidexClientId = () => env.SQUIDEX_CLIENT_ID || undefined;
export const getSquidexClientSecret = () => env.SQUIDEX_CLIENT_SECRET || undefined;
-export const getSquidexEnvironment = () => env.SQUIDEX_ENVIRONMENT || undefined;
-export const getSquidexPublicUrl = () => env.SQUIDEX_PUBLIC_URL || getSquidexEnvironment();
+export const getSquidexEnvironment = () => trimSlashes(env.SQUIDEX_ENVIRONMENT||'') || undefined;
+export const getSquidexPublicUrl = () => trimSlashes(env.SQUIDEX_PUBLIC_URL||'') || getSquidexEnvironment();
export const config: Config = {
// AmazonProductAdvertisingAPIAccessKey: getAmazonProductAdvertisingAPIAccessKey(),
diff --git a/src/data/models/multis/Redirect.ts b/src/data/models/multis/Redirect.ts
index 915be57..7fa6283 100644
--- a/src/data/models/multis/Redirect.ts
+++ b/src/data/models/multis/Redirect.ts
@@ -3,4 +3,5 @@ import type { NonLocalized } from "../../internals/NonLocalizedT";
export interface Redirect {
prevSlug: NonLocalized,
newContent: NonLocalized,
+ newContentSchema: NonLocalized<{ schemaName: string }[]>,
}
\ No newline at end of file
diff --git a/src/lib/rendering.ts b/src/lib/rendering.ts
index 804253d..3fa450f 100644
--- a/src/lib/rendering.ts
+++ b/src/lib/rendering.ts
@@ -1,6 +1,7 @@
import markdownIt from "markdown-it";
import markdownItAttrs from "markdown-it-attrs";
import vm from 'node:vm';
+import { config } from "../config";
export const md = markdownIt().use(markdownItAttrs, {
});
@@ -67,9 +68,15 @@ const renderCodeblock = (lang: string, template: string, templateContext?: any)
return template;
}
+const replaceSquidexAssetPathWithOwn = (html: string) => {
+ let re = new RegExp(`src\\s*=\\s*["']${config.squidexPublicUrl?.replaceAll(`/`, `\\/`).replaceAll(`.`, `\\.`)||''}\\/api\\/assets/${config.squidexAppName||''}/([\\w-\\.\\/]*)["']`, 'g');
+ return html.replaceAll(re, `src="${config.siteUrl}/img/$1"`);
+}
+
export const renderMarkdown = (template: string, templateContext?: any) => {
// render code blocks inside of the Markdown
template = renderCodeblock('markdown', template, templateContext);
template = md.render(interpolateString(template, templateContext));
+ template = replaceSquidexAssetPathWithOwn(template);
return template;
}
\ No newline at end of file
diff --git a/src/pages/[...routeLookup].astro b/src/pages/[...routeLookup].astro
index 665d849..1ec9485 100644
--- a/src/pages/[...routeLookup].astro
+++ b/src/pages/[...routeLookup].astro
@@ -87,27 +87,24 @@ else {
const redirectDto = await getRedirectsByPreviousSlug(routeLookup!);
console.log("redirectDto:", redirectDto);
if (redirectDto && redirectDto.items && redirectDto.items.length > 0) {
- console.log("getting redirectReferencesDto for", SCHEMAS.REDIRECTS, redirectDto.items[0].id);
+ console.log("getting redirectReferencesDto for", SCHEMAS.REDIRECTS, redirectDto.items[0].data?.newContentSchema[locale]);
+ // let objectId = redirectDto.items[0].data.newContent[locale];
//next line crashes:
- let redirectReferencesDto = await client.contents.getReferences({ schema: SCHEMAS.REDIRECTS, id: redirectDto.items[0].id });
- console.log("redirectReferencesDto:", redirectReferencesDto);
+ // let redirectReferencesDto = await client.contents.getReferences({ schema: SCHEMAS.REDIRECTS, id: redirectDto.items[0].id });
+ let schemaName = redirectDto.items[0].data?.newContentSchema[locale][0].schemaName;
+ let whicheverDto = await client.contents.getContent({schema: schemaName, id: redirectDto.items[0].data?.newContent[locale][0]});
+ // console.log("redirectReferencesDto:", redirectReferencesDto);
// client.contents.getConten
- // switch (redirectDto.items[0].data?.referenceSchema.iv) {
- // case SCHEMAS.BRANDS:
- // return Astro.rewrite(`/view/brands/${locale}/${objectId}`);
- // case SCHEMAS.MARKETPLACES:
- // return Astro.rewrite(`/view/marketplaces/${locale}/${objectId}`);
- // case SCHEMAS.PAGES:
- // return Astro.rewrite(`/view/pages/${locale}/${objectId}`);
- // case SCHEMAS.PRODUCT_CATEGORIES:
- // return Astro.rewrite(`/view/product-categories/${locale}/${objectId}`);
- // case SCHEMAS.PRODUCTS:
- // return Astro.rewrite(`/view/products/${locale}/${objectId}`);
- // case SCHEMAS.SELLERS:
- // return Astro.rewrite(`/view/sellers/${locale}/${objectId}`);
- // }
- // Astro.response.headers.set('Vary', 'Accept-Language');
- // return Astro.redirect(,303)
+ switch (schemaName) {
+ case SCHEMAS.BRANDS:
+ case SCHEMAS.MARKETPLACES:
+ case SCHEMAS.PAGES:
+ case SCHEMAS.PRODUCT_CATEGORIES:
+ case SCHEMAS.PRODUCTS:
+ case SCHEMAS.SELLERS:
+ Astro.response.headers.set('Vary', 'Accept-Language');
+ return Astro.redirect(`/${whicheverDto.data.slug[locale]}`, 303);
+ }
}
return redirect404NotFound();
}