diff --git a/cms-api/pom.xml b/cms-api/pom.xml
index 4e6ed8382..bcde7c921 100644
--- a/cms-api/pom.xml
+++ b/cms-api/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-api
jar
diff --git a/cms-api/src/main/java/com/condation/cms/api/Constants.java b/cms-api/src/main/java/com/condation/cms/api/Constants.java
index ec77e0218..49d033a16 100644
--- a/cms-api/src/main/java/com/condation/cms/api/Constants.java
+++ b/cms-api/src/main/java/com/condation/cms/api/Constants.java
@@ -23,6 +23,7 @@
*/
+import java.util.List;
import java.util.function.Function;
import java.util.regex.Pattern;
import lombok.AccessLevel;
@@ -105,6 +106,7 @@ public static class ContentTypes {
public static final int DEFAULT_PAGE_SIZE = 5;
public static final String DEFAULT_CONTENT_TYPE = ContentTypes.HTML;
+ public static final List DEFAULT_CONTENT_PIPELINE = List.of("markdown", "shortcode");
public static final int DEFAULT_REDIRECT_STATUS = 301;
diff --git a/cms-api/src/main/java/com/condation/cms/api/SiteProperties.java b/cms-api/src/main/java/com/condation/cms/api/SiteProperties.java
index fb9ad7c4c..58740ef64 100644
--- a/cms-api/src/main/java/com/condation/cms/api/SiteProperties.java
+++ b/cms-api/src/main/java/com/condation/cms/api/SiteProperties.java
@@ -80,6 +80,10 @@ public String defaultContentType () {
return (String)getSubMap("content").getOrDefault("type", Constants.DEFAULT_CONTENT_TYPE);
}
+ public List contentPipeline () {
+ return (List)getSubMap("content").getOrDefault("pipeline", Constants.DEFAULT_CONTENT_PIPELINE);
+ }
+
public String cacheEngine() {
return (String) getSubMap("cache").getOrDefault("engine", Constants.DEFAULT_CACHE_ENGINE);
}
diff --git a/cms-api/src/main/java/com/condation/cms/api/feature/features/TemplateEngineFeature.java b/cms-api/src/main/java/com/condation/cms/api/feature/features/TemplateEngineFeature.java
new file mode 100644
index 000000000..5ff1352a4
--- /dev/null
+++ b/cms-api/src/main/java/com/condation/cms/api/feature/features/TemplateEngineFeature.java
@@ -0,0 +1,37 @@
+package com.condation.cms.api.feature.features;
+
+/*-
+ * #%L
+ * cms-api
+ * %%
+ * Copyright (C) 2023 - 2024 CondationCMS
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * .
+ * #L%
+ */
+
+
+import com.condation.cms.api.annotations.FeatureScope;
+import com.condation.cms.api.feature.Feature;
+import com.condation.cms.api.template.TemplateEngine;
+
+/**
+ *
+ * @author t.marx
+ */
+@FeatureScope({FeatureScope.Scope.REQUEST})
+public record TemplateEngineFeature(TemplateEngine templateEngine) implements Feature {
+
+}
diff --git a/cms-api/src/main/java/com/condation/cms/api/template/TemplateEngine.java b/cms-api/src/main/java/com/condation/cms/api/template/TemplateEngine.java
index 29b1b0b0d..877fb50ee 100644
--- a/cms-api/src/main/java/com/condation/cms/api/template/TemplateEngine.java
+++ b/cms-api/src/main/java/com/condation/cms/api/template/TemplateEngine.java
@@ -42,6 +42,10 @@ public interface TemplateEngine {
String render(final String template, final TemplateEngine.Model model) throws IOException;
+ default String renderFromString(final String templateString, final TemplateEngine.Model model) throws IOException {
+ return templateString;
+ }
+
@RequiredArgsConstructor
public static class Model {
public final Map values = new HashMap<>();
diff --git a/cms-auth/pom.xml b/cms-auth/pom.xml
index d860dfe62..a4c59730e 100644
--- a/cms-auth/pom.xml
+++ b/cms-auth/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-auth
jar
diff --git a/cms-content/pom.xml b/cms-content/pom.xml
index 536a21032..d4076ac80 100644
--- a/cms-content/pom.xml
+++ b/cms-content/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-content
jar
diff --git a/cms-content/src/main/java/com/condation/cms/content/DefaultContentRenderer.java b/cms-content/src/main/java/com/condation/cms/content/DefaultContentRenderer.java
index 921839c05..e9fa9a147 100644
--- a/cms-content/src/main/java/com/condation/cms/content/DefaultContentRenderer.java
+++ b/cms-content/src/main/java/com/condation/cms/content/DefaultContentRenderer.java
@@ -49,7 +49,6 @@
import com.condation.cms.content.views.model.View;
import com.condation.cms.extensions.hooks.DBHooks;
import com.condation.cms.extensions.hooks.TemplateHooks;
-import com.condation.cms.extensions.request.RequestExtensions;
import com.condation.cms.content.template.functions.LinkFunction;
import com.condation.cms.content.template.functions.list.NodeListFunctionBuilder;
import com.condation.cms.content.template.functions.navigation.NavigationFunction;
@@ -129,8 +128,8 @@ private Object getFeatureValueOrDefault(RequestContext conte
return defaultValue;
}
- private String renderMarkdown(final String rawContent, final RequestContext context) {
- var pipeline = ContentPipelineFactory.create(context);
+ private String renderMarkdown(final String rawContent, final RequestContext context, final TemplateEngine.Model model) {
+ var pipeline = ContentPipelineFactory.create(context, model);
return pipeline.process(rawContent);
}
@@ -149,9 +148,6 @@ public String render(final ReadOnlyFile contentFile, final RequestContext contex
modelExtending.accept(model);
model.values.put("meta", meta);
- model.values.put("content",
- renderMarkdown(rawContent, context)
- );
model.values.put("sections", sections);
model.values.put("shortCodes", createShortCodeFunction(context));
@@ -187,6 +183,10 @@ public String render(final ReadOnlyFile contentFile, final RequestContext contex
extendModel(model);
+ model.values.put("content",
+ renderMarkdown(rawContent, context, model)
+ );
+
return templates.get().render((String) meta.get("template"), model);
}
diff --git a/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipeline.java b/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipeline.java
index 494106bde..852b03346 100644
--- a/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipeline.java
+++ b/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipeline.java
@@ -21,44 +21,76 @@
* .
* #L%
*/
-
+import com.condation.cms.api.configuration.configs.SiteConfiguration;
import com.condation.cms.api.feature.Feature;
+import com.condation.cms.api.feature.features.ConfigurationFeature;
+import com.condation.cms.api.feature.features.TemplateEngineFeature;
import com.condation.cms.api.hooks.FilterContext;
import com.condation.cms.api.hooks.HookSystem;
import com.condation.cms.api.hooks.Hooks;
import com.condation.cms.api.request.RequestContext;
+import com.condation.cms.api.template.TemplateEngine;
import com.condation.cms.content.RenderContext;
+import java.io.IOException;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
/**
*
* @author thmar
*/
+@Slf4j
@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
public class ContentPipeline {
private final HookSystem hookSystem;
private final RequestContext requestContext;
+
+ private final TemplateEngine.Model model;
- void init () {
- hookSystem.registerFilter(Hooks.CONTENT_FILTER.hook(), this::markdown, 20);
- hookSystem.registerFilter(Hooks.CONTENT_FILTER.hook(), this::shortCodes, 30);
+ void init() {
+
+ List pipeline = requestContext.get(ConfigurationFeature.class)
+ .configuration().get(SiteConfiguration.class)
+ .siteProperties().contentPipeline();
+
+ AtomicInteger prio = new AtomicInteger(10);
+ pipeline.forEach(processor -> {
+ switch (processor) {
+ case "markdown" -> hookSystem.registerFilter(Hooks.CONTENT_FILTER.hook(), this::processMarkdown, prio.getAndAdd(10));
+ case "shortcode" -> hookSystem.registerFilter(Hooks.CONTENT_FILTER.hook(), this::processShortCodes, prio.getAndAdd(10));
+ case "template" -> hookSystem.registerFilter(Hooks.CONTENT_FILTER.hook(), this::processTemplate, prio.getAndAdd(10));
+ }
+ });
+
}
-
- public String process (String rawContent) {
+
+ public String process(String rawContent) {
return hookSystem.filter(Hooks.CONTENT_FILTER.hook(), rawContent).value();
}
-
- private String markdown (FilterContext context) {
+
+ private String processMarkdown(FilterContext context) {
return requestContext.get(RenderContext.class).markdownRenderer().render(context.value());
}
-
- private String shortCodes (FilterContext context) {
+
+ private String processShortCodes(FilterContext context) {
return requestContext.get(RenderContext.class).shortCodes().replace(context.value());
}
-
+
+ private String processTemplate(FilterContext context) {
+ try {
+ return requestContext.get(TemplateEngineFeature.class).templateEngine()
+ .renderFromString(context.value(), model);
+ } catch (IOException ex) {
+ log.error("", ex);
+ return context.value();
+ }
+ }
+
private Object getFeatureValueOrDefault(RequestContext context,
Class feature, Function valueFunction, Object defaultValue) {
if (context.has(feature)) {
diff --git a/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipelineFactory.java b/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipelineFactory.java
index 9fc533ad4..9cd1a31dd 100644
--- a/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipelineFactory.java
+++ b/cms-content/src/main/java/com/condation/cms/content/pipeline/ContentPipelineFactory.java
@@ -24,6 +24,7 @@
import com.condation.cms.api.feature.features.HookSystemFeature;
import com.condation.cms.api.request.RequestContext;
+import com.condation.cms.api.template.TemplateEngine;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -34,10 +35,10 @@
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ContentPipelineFactory {
- public static ContentPipeline create (final RequestContext requestContext) {
+ public static ContentPipeline create (final RequestContext requestContext, final TemplateEngine.Model model) {
var hookSystem = requestContext.get(HookSystemFeature.class).hookSystem();
- var pipeline = new ContentPipeline(hookSystem.clone(), requestContext);
+ var pipeline = new ContentPipeline(hookSystem.clone(), requestContext, model);
pipeline.init();
return pipeline;
diff --git a/cms-core/pom.xml b/cms-core/pom.xml
index 06737f722..84238b219 100644
--- a/cms-core/pom.xml
+++ b/cms-core/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-core
jar
diff --git a/cms-extensions/pom.xml b/cms-extensions/pom.xml
index 299df7881..123d1f8d5 100644
--- a/cms-extensions/pom.xml
+++ b/cms-extensions/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-extensions
jar
diff --git a/cms-filesystem/pom.xml b/cms-filesystem/pom.xml
index ce2ce5605..11611dd23 100644
--- a/cms-filesystem/pom.xml
+++ b/cms-filesystem/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-filesystem
jar
diff --git a/cms-git/pom.xml b/cms-git/pom.xml
index 3a859eeb6..b93363b8c 100644
--- a/cms-git/pom.xml
+++ b/cms-git/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-git
jar
diff --git a/cms-media/pom.xml b/cms-media/pom.xml
index 00c23b740..d6ea9d0b0 100644
--- a/cms-media/pom.xml
+++ b/cms-media/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-media
jar
diff --git a/cms-sandbox/pom.xml b/cms-sandbox/pom.xml
index 04c96c9a0..7d6224783 100644
--- a/cms-sandbox/pom.xml
+++ b/cms-sandbox/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-sandbox
pom
diff --git a/cms-server/hosts/demo2/content/index.md b/cms-server/hosts/demo2/content/index.md
index 7addcf52e..4fd279cae 100644
--- a/cms-server/hosts/demo2/content/index.md
+++ b/cms-server/hosts/demo2/content/index.md
@@ -4,3 +4,7 @@ template: start.html
---
Test Page
+
+{% if DEV_MODE %}
+# It's the dev mode!
+{% endif %}
\ No newline at end of file
diff --git a/cms-server/hosts/demo2/extensions/test.extension.js b/cms-server/hosts/demo2/extensions/test.extension.js
index 7b705cf6c..e69de29bb 100644
--- a/cms-server/hosts/demo2/extensions/test.extension.js
+++ b/cms-server/hosts/demo2/extensions/test.extension.js
@@ -1,38 +0,0 @@
-import { UTF_8 } from 'system/charsets.mjs';
-import { $http } from 'system/http.mjs';
-import { $template } from 'system/template.mjs';
-import { getLogger } from 'system/logging.mjs';
-import { $hooks } from 'system/hooks.mjs';
-
-
-const logger = getLogger("extensions");
-logger.info("debug log from test extension");
-
-// callable via /extensions/test
-$http.get("/test", (request, response) => {
- response.addHeader("Content-Type", "text/html; charset=utf-8")
- response.write("ich bin einen test extension!öäü", UTF_8)
-})
-$http.post("/form", (request, response) => {
- const body = JSON.parse(request.getBody(UTF_8))
- console.log("body", request.getBody(UTF_8))
- console.log(body.form)
- response.addHeader("Content-Type", "text/html; charset=utf-8")
- response.write("ich bin einen test extension!öäü", UTF_8)
-})
-
-
-
-$template.registerTemplateFunction(
- "getHello",
- (name) => "Hello " + name + "!"
-)
-
-$hooks.registerAction(
- "test/content",
- (context) => {
- return `
- Test Content
- `;
- }
-);
\ No newline at end of file
diff --git a/cms-server/hosts/demo2/site.yaml b/cms-server/hosts/demo2/site.yaml
index 2a13a06c8..38fec9708 100644
--- a/cms-server/hosts/demo2/site.yaml
+++ b/cms-server/hosts/demo2/site.yaml
@@ -5,4 +5,9 @@ template:
engine: pebble
modules:
active:
- - pebble-module
\ No newline at end of file
+ - pebble-module
+content:
+ pipeline:
+ - template
+ - markdown
+ - shortcode
\ No newline at end of file
diff --git a/cms-server/hosts/demo2/templates/start.html b/cms-server/hosts/demo2/templates/start.html
index 9f7d88660..724c798aa 100644
--- a/cms-server/hosts/demo2/templates/start.html
+++ b/cms-server/hosts/demo2/templates/start.html
@@ -1,3 +1,7 @@
+
+{{ content | raw}}
+
+
featured
{% set news = query.create("/blog").where('featured', true).get() %}
{% for entry in news %}
@@ -16,8 +20,6 @@ featured with in with operator
{{entry.name}}
{% endfor %}
-{{ getHello.apply("thorsten") }}
-
{{ messages.getLabel("labels", "contact.form.title", ['test']) }}
test hooks
diff --git a/cms-server/pom.xml b/cms-server/pom.xml
index a6a0f9249..8d5ffa55d 100644
--- a/cms-server/pom.xml
+++ b/cms-server/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
cms-server
jar
diff --git a/cms-server/src/main/java/com/condation/cms/request/RequestContextFactory.java b/cms-server/src/main/java/com/condation/cms/request/RequestContextFactory.java
index 03bf47bf6..3fe24525c 100644
--- a/cms-server/src/main/java/com/condation/cms/request/RequestContextFactory.java
+++ b/cms-server/src/main/java/com/condation/cms/request/RequestContextFactory.java
@@ -40,6 +40,7 @@
import com.condation.cms.api.feature.features.ServerPropertiesFeature;
import com.condation.cms.api.feature.features.SiteMediaServiceFeature;
import com.condation.cms.api.feature.features.SitePropertiesFeature;
+import com.condation.cms.api.feature.features.TemplateEngineFeature;
import com.condation.cms.api.feature.features.ThemeFeature;
import com.condation.cms.api.hooks.HookSystem;
import com.condation.cms.api.mapper.ContentNodeMapper;
@@ -47,6 +48,7 @@
import com.condation.cms.api.media.MediaService;
import com.condation.cms.api.model.Parameter;
import com.condation.cms.api.request.RequestContext;
+import com.condation.cms.api.template.TemplateEngine;
import com.condation.cms.api.theme.Theme;
import com.condation.cms.api.utils.HTTPUtil;
import com.condation.cms.api.utils.RequestUtil;
@@ -109,6 +111,7 @@ public RequestContext createContext () {
requestContext.add(HookSystemFeature.class, new HookSystemFeature(injector.getInstance(HookSystem.class)));
requestContext.add(MarkdownRendererFeature.class, new MarkdownRendererFeature(injector.getInstance(MarkdownRenderer.class)));
+ requestContext.add(TemplateEngineFeature.class, new TemplateEngineFeature(injector.getInstance(TemplateEngine.class)));
return requestContext;
}
@@ -134,7 +137,7 @@ public void initContext (RequestContext requestContext, Request request) throws
RenderContext renderContext = new RenderContext(
markdownRenderer,
- initShortCodes(requestExtensions, requestContext),
+ initShortCodes(requestContext),
theme);
requestContext.add(RenderContext.class, renderContext);
@@ -149,7 +152,7 @@ private HookSystem initHookSystem(RequestContext requestContext) {
return hookSystem;
}
- private ShortCodes initShortCodes(RequestExtensions requestExtensions, RequestContext requestContext) {
+ private ShortCodes initShortCodes(RequestContext requestContext) {
Map> codes = new HashMap<>();
injector.getInstance(ModuleManager.class).extensions(RegisterShortCodesExtensionPoint.class)
@@ -160,53 +163,6 @@ private ShortCodes initShortCodes(RequestExtensions requestExtensions, RequestCo
return new ShortCodes(wrapper.getShortCodes());
}
-
-
- private RequestContext init(RequestContext requestContext) throws IOException {
-
- var theme = injector.getInstance(Theme.class);
- var markdownRenderer = injector.getInstance(MarkdownRenderer.class);
- var extensionManager = injector.getInstance(ExtensionManager.class);
- var siteProperties = injector.getInstance(SiteProperties.class);
- var siteMediaService = injector.getInstance(MediaService.class);
-
- requestContext.add(InjectorFeature.class, new InjectorFeature(injector));
-
- requestContext.add(ThemeFeature.class, new ThemeFeature(theme));
- requestContext.add(ContentParserFeature.class, new ContentParserFeature(injector.getInstance(ContentParser.class)));
- requestContext.add(ContentNodeMapperFeature.class, new ContentNodeMapperFeature(injector.getInstance(ContentNodeMapper.class)));
- if (ServerContext.IS_DEV) {
- requestContext.add(IsDevModeFeature.class, new IsDevModeFeature());
- }
- requestContext.add(ConfigurationFeature.class, new ConfigurationFeature(injector.getInstance(Configuration.class)));
- requestContext.add(ServerPropertiesFeature.class, new ServerPropertiesFeature(
- injector.getInstance(Configuration.class)
- .get(ServerConfiguration.class).serverProperties()
- ));
- requestContext.add(SitePropertiesFeature.class, new SitePropertiesFeature(siteProperties));
- requestContext.add(SiteMediaServiceFeature.class, new SiteMediaServiceFeature(siteMediaService));
-
- requestContext.add(ServerHooks.class, new ServerHooks(requestContext));
- requestContext.add(TemplateHooks.class, new TemplateHooks(requestContext));
- requestContext.add(DBHooks.class, new DBHooks(requestContext));
- requestContext.add(ContentHooks.class, new ContentHooks(requestContext));
-
- requestContext.add(HookSystemFeature.class, new HookSystemFeature(setupHookSystem(requestContext)));
-
- RequestExtensions requestExtensions = extensionManager.newContext(theme, requestContext);
-
- RenderContext renderContext = new RenderContext(
- markdownRenderer,
- createShortCodes(requestExtensions, requestContext),
- theme);
- requestContext.add(RenderContext.class, renderContext);
- requestContext.add(MarkdownRendererFeature.class, new MarkdownRendererFeature(renderContext.markdownRenderer()));
-
- requestContext.add(RequestExtensions.class, requestExtensions);
-
- return requestContext;
- }
-
public RequestContext create() throws IOException {
var theme = injector.getInstance(Theme.class);
@@ -237,38 +193,31 @@ public RequestContext create() throws IOException {
requestContext.add(DBHooks.class, new DBHooks(requestContext));
requestContext.add(ContentHooks.class, new ContentHooks(requestContext));
- requestContext.add(HookSystemFeature.class, new HookSystemFeature(setupHookSystem(requestContext)));
+ requestContext.add(HookSystemFeature.class, new HookSystemFeature(setupHookSystem()));
RequestExtensions requestExtensions = extensionManager.newContext(theme, requestContext);
RenderContext renderContext = new RenderContext(
markdownRenderer,
- createShortCodes(requestExtensions, requestContext),
+ createShortCodes(requestContext),
theme);
requestContext.add(RenderContext.class, renderContext);
- requestContext.add(MarkdownRendererFeature.class, new MarkdownRendererFeature(renderContext.markdownRenderer()));
+ requestContext.add(MarkdownRendererFeature.class, new MarkdownRendererFeature(markdownRenderer));
+ requestContext.add(TemplateEngineFeature.class, new TemplateEngineFeature(injector.getInstance(TemplateEngine.class)));
requestContext.add(RequestExtensions.class, requestExtensions);
return requestContext;
}
- public RequestContext create(
- Request request) throws IOException {
-
-// var uri = request.getHttpURI().getPath();
- var uri = RequestUtil.getContentPath(request);
- var queryParameters = HTTPUtil.queryParameters(request.getHttpURI().getQuery());
-
- return create(request.getContext().getContextPath(), uri, queryParameters, Optional.of(request));
- }
-
+ // used
public RequestContext create(
String contextPath,
String uri, Map> queryParameters) throws IOException {
return create(contextPath, uri, queryParameters, Optional.empty());
}
+ // used
public RequestContext create(
String contextPath,
String uri, Map> queryParameters, Optional request) throws IOException {
@@ -292,7 +241,7 @@ public RequestContext create(
* @param requestContext
* @return
*/
- private HookSystem setupHookSystem(RequestContext requestContext) {
+ private HookSystem setupHookSystem() {
var hookSystem = injector.getInstance(HookSystem.class);
var moduleManager = injector.getInstance(ModuleManager.class);
moduleManager.extensions(HookSystemRegisterExtentionPoint.class).forEach(extensionPoint -> extensionPoint.register(hookSystem));
@@ -300,7 +249,7 @@ private HookSystem setupHookSystem(RequestContext requestContext) {
return hookSystem;
}
- private ShortCodes createShortCodes(RequestExtensions requestExtensions, RequestContext requestContext) {
+ private ShortCodes createShortCodes(RequestContext requestContext) {
Map> codes = new HashMap<>();
injector.getInstance(ModuleManager.class).extensions(RegisterShortCodesExtensionPoint.class)
diff --git a/cms-server/src/test/java/com/condation/cms/TestHelper.java b/cms-server/src/test/java/com/condation/cms/TestHelper.java
index ea28d6ce0..43559bd56 100644
--- a/cms-server/src/test/java/com/condation/cms/TestHelper.java
+++ b/cms-server/src/test/java/com/condation/cms/TestHelper.java
@@ -25,7 +25,10 @@
import com.condation.cms.api.ServerProperties;
import com.condation.cms.api.SiteProperties;
+import com.condation.cms.api.configuration.Configuration;
+import com.condation.cms.api.configuration.configs.SiteConfiguration;
import com.condation.cms.api.content.ContentParser;
+import com.condation.cms.api.feature.features.ConfigurationFeature;
import com.condation.cms.api.feature.features.ContentNodeMapperFeature;
import com.condation.cms.api.feature.features.ContentParserFeature;
import com.condation.cms.api.feature.features.HookSystemFeature;
@@ -67,6 +70,8 @@ public static RequestContext requestContext() {
public static RequestContext requestContext(String uri) {
var markdownRenderer = TestHelper.getRenderer();
RequestContext context = new RequestContext();
+
+
context.add(RequestFeature.class, new RequestFeature(uri, Map.of()));
context.add(RequestExtensions.class, new RequestExtensions(null));
context.add(RenderContext.class, new RenderContext(markdownRenderer, new ShortCodes(Map.of()), DefaultTheme.EMPTY));
@@ -79,9 +84,17 @@ public static RequestContext requestContext(String uri) {
context.add(MarkdownRendererFeature.class, new MarkdownRendererFeature(null));
context.add(ContentParserFeature.class, new ContentParserFeature(null));
- context.add(SitePropertiesFeature.class, new SitePropertiesFeature(new SiteProperties(Map.of(
+ final SiteProperties siteProperties = new SiteProperties(Map.of(
"context_path", "/"
- ))));
+ ));
+ context.add(SitePropertiesFeature.class, new SitePropertiesFeature(siteProperties));
+
+ Configuration config = Mockito.mock(Configuration.class);
+ SiteConfiguration siteConfig = Mockito.mock(SiteConfiguration.class);
+ Mockito.when(siteConfig.siteProperties()).thenReturn(siteProperties);
+ Mockito.when(config.get(SiteConfiguration.class)).thenReturn(siteConfig);
+ context.add(ConfigurationFeature.class, new ConfigurationFeature(config));
+
context.add(ServerPropertiesFeature.class, new ServerPropertiesFeature(new ServerProperties(Map.of(
))));
diff --git a/cms-server/themes/demo/extensions/theme.extension.js b/cms-server/themes/demo/extensions/theme.extension.js
index 49c1d93fa..798b1ff7b 100644
--- a/cms-server/themes/demo/extensions/theme.extension.js
+++ b/cms-server/themes/demo/extensions/theme.extension.js
@@ -1,6 +1,10 @@
-import { $shortcodes } from 'system/shortcodes.mjs';
+import { $hooks } from 'system/hooks.mjs';
-$shortcodes.register(
- "theme_name",
- (params) => `Hello, I'm your default theme.`
-)
\ No newline at end of file
+
+$hooks.registerAction("system/content/shortcodes", (context) => {
+ context.arguments().get("shortCodes").put(
+ "theme_name",
+ (params) => `Hello, I'm your demo theme.`
+ )
+ return null;
+})
\ No newline at end of file
diff --git a/cms-server/themes/test/extensions/theme.extension.js b/cms-server/themes/test/extensions/theme.extension.js
index 49c1d93fa..d97089edd 100644
--- a/cms-server/themes/test/extensions/theme.extension.js
+++ b/cms-server/themes/test/extensions/theme.extension.js
@@ -1,6 +1,10 @@
-import { $shortcodes } from 'system/shortcodes.mjs';
+import { $hooks } from 'system/hooks.mjs';
-$shortcodes.register(
- "theme_name",
- (params) => `Hello, I'm your default theme.`
-)
\ No newline at end of file
+
+$hooks.registerAction("system/content/shortcodes", (context) => {
+ context.arguments().get("shortCodes").put(
+ "theme_name",
+ (params) => `Hello, I'm your test theme.`
+ )
+ return null;
+})
\ No newline at end of file
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index b7a6b3c58..f74716159 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
integration-tests
jar
diff --git a/modules-framework/api/pom.xml b/modules-framework/api/pom.xml
index 60443b509..909126e47 100644
--- a/modules-framework/api/pom.xml
+++ b/modules-framework/api/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms.module.framework
module-framework
- 6.1.1
+ 6.2.0
modules-api
jar
diff --git a/modules-framework/manager/pom.xml b/modules-framework/manager/pom.xml
index 6b15db815..4a6429e41 100644
--- a/modules-framework/manager/pom.xml
+++ b/modules-framework/manager/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms.module.framework
module-framework
- 6.1.1
+ 6.2.0
modules-manager
jar
diff --git a/modules-framework/pom.xml b/modules-framework/pom.xml
index b1f292e5f..8f6e754b2 100644
--- a/modules-framework/pom.xml
+++ b/modules-framework/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
com.condation.cms.module.framework
module-framework
diff --git a/modules/example-module/pom.xml b/modules/example-module/pom.xml
index 91288473a..e9a5f25e7 100644
--- a/modules/example-module/pom.xml
+++ b/modules/example-module/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms.modules
cms-modules
- 6.1.1
+ 6.2.0
example-module
jar
diff --git a/modules/pom.xml b/modules/pom.xml
index e322b51da..f786268fd 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -4,7 +4,7 @@
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
com.condation.cms.modules
cms-modules
diff --git a/pom.xml b/pom.xml
index dc79feab5..922730670 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.condation.cms
cms-parent
- 6.1.1
+ 6.2.0
pom
UTF-8