org.libreccm
ccm-core
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/images/libreccm.png b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/images/libreccm.png
new file mode 100644
index 000000000..676ec2137
Binary files /dev/null and b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/images/libreccm.png differ
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/settings.properties b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/settings.properties
new file mode 100644
index 000000000..8b100e968
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/settings.properties
@@ -0,0 +1,2 @@
+example.setting=Properties from the Freemarker theme.
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/styles/style.css b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/styles/style.css
new file mode 100644
index 000000000..e8ac4eed4
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/styles/style.css
@@ -0,0 +1,73 @@
+* {
+ box-sizing: border-box;
+
+ margin: 0;
+ padding: 0;
+}
+
+header {
+ padding: 1em 2em;
+}
+
+header img {
+ display: block;
+
+ margin-left: auto;
+ margin-right: auto;
+
+ width: 20vw;
+ max-width: 1020px;
+ max-height: 566px;
+}
+
+main {
+ max-width: 55em;
+
+ margin-left: auto;
+ margin-right: auto;
+
+ padding: 2em 1em;
+}
+
+main h1 {
+ text-align: center;
+}
+
+main form.login {
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+
+ margin-top: 1em;
+}
+
+main form.login .form-row {
+ display: flex;
+ align-items: flex-start;
+ flex-direction: column;
+
+ margin-bottom: 0.5em;
+}
+
+main form.login button[type=submit] {
+ display: block;
+
+ margin-top: 0.75em;
+ margin-left: auto;
+ margin-right: auto;
+
+ padding: 0.25em;
+}
+
+footer {
+ background-color: #71ac52;
+ color: #fff;
+
+ padding: 3em 1em;
+
+ width: 100vw;
+}
+
+footer p {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/footer.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/footer.html.ftl
new file mode 100644
index 000000000..013aff2b7
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/footer.html.ftl
@@ -0,0 +1,19 @@
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/header.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/header.html.ftl
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/header.html.ftl
@@ -0,0 +1 @@
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-form.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-form.html.ftl
new file mode 100644
index 000000000..348be7fac
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-form.html.ftl
@@ -0,0 +1,35 @@
+<#import "../main.html.ftl" as main>
+
+<@main.ccm_main>
+ ${LoginMessages['login.title']}
+ <#if (loginFailed)>
+
+ ${LoginMessages['login.errors.failed']}
+
+ #if>
+
+@main.ccm_main>
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-password-recovered.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-password-recovered.html.ftl
new file mode 100644
index 000000000..ccee63371
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-password-recovered.html.ftl
@@ -0,0 +1,15 @@
+
+
+
+ Category page
+
+
+
+
+ ${LoginMessages['login.password_recovered.title']}
+ ${LoginMessages['login.password_recovered.message']}
+
+ <#include "footer.html.ftl">
+
+
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-recover-password.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-recover-password.html.ftl
new file mode 100644
index 000000000..b39124964
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/login/login-recover-password.html.ftl
@@ -0,0 +1,27 @@
+
+
+
+ Category page
+
+
+
+
+ ${LoginMessages['login.recover_password.title']}
+ <# if (failedToSendRecoverMessage)>
+
+ ${LoginMessages['login.errors.failedToSendRecoverMessage']}
+
+ #if>
+
+
+ <#include "footer.html.ftl">
+
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/logout/loggedout.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/logout/loggedout.html.ftl
new file mode 100644
index 000000000..c126f5956
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/logout/loggedout.html.ftl
@@ -0,0 +1,13 @@
+
+
+
+ Category page
+
+
+
+
+ Logout successful
+ Logout successful
+
+
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/main.html.ftl b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/main.html.ftl
new file mode 100644
index 000000000..1e93a0183
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/templates/main.html.ftl
@@ -0,0 +1,25 @@
+<#macro ccm_main scripts=[]>
+
+
+ Category page
+
+ <#list scripts as script>
+
+ #list>
+
+
+
+
+ <#nested>
+
+
+
+
+#macro>
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/texts/labels.properties b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/texts/labels.properties
new file mode 100644
index 000000000..c69a4cb3f
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/texts/labels.properties
@@ -0,0 +1,5 @@
+label.critical=Critical
+label.error=Error
+label.ok=OK
+label.warning=Warning
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-bundle.properties b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-bundle.properties
new file mode 100644
index 000000000..5df4b5be9
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-bundle.properties
@@ -0,0 +1,3 @@
+footer.impressum=Impressum
+footer.privacy=Privacy
+
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-index.json b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-index.json
new file mode 100644
index 000000000..8961047b8
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme-index.json
@@ -0,0 +1,95 @@
+{
+ "files": [
+ {
+ "name": "images",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "libreccm.png",
+ "isDirectory": false,
+ "mimeType": "image/png"
+ }
+ ]
+ },
+ {
+ "name": "settings.properties",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ },
+ {
+ "name": "styles",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "style.css",
+ "isDirectory": false,
+ "mimeType": "text/css"
+ }
+ ]
+ },
+ {
+ "name": "templates",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "login",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "login-form.html.ftl",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ },
+ {
+ "name": "login-password-recovered.html.ftl",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ }, {
+ "name": "login-recover-password.html.ftl",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ }
+ ]
+ },
+ {
+ "name": "logout",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "loggedout.html.ftl",
+ "isDirectory": false,
+ "mimeText": "text/plain"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "texts",
+ "isDirectory": true,
+ "files": [
+ {
+ "name": "labels.properties",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ }
+ ]
+ },
+ {
+ "name": "theme-bundle.properties",
+ "isDirectory": false,
+ "mimeType": "text/plain"
+ },
+ {
+ "name": "theme-index.json",
+ "isDirectory": false,
+ "mimeType": "application/json"
+ },
+ {
+ "name": "theme.json",
+ "isDirectory": false,
+ "mimeType": "application/json"
+ }
+
+ ]
+}
diff --git a/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme.json b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme.json
new file mode 100644
index 000000000..da239ad5b
--- /dev/null
+++ b/ccm-bundle-devel-wildfly/src/main/resources/themes/librecms-devel/theme.json
@@ -0,0 +1,144 @@
+{
+ "name": "librecms-devel",
+ "type": "freemarker",
+
+ "default-template": "templates/default.html.ftl",
+
+ "mvc-templates": {
+ "default": {
+ "description": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Default Template"
+ }
+ ]
+ }
+ },
+ "name": "Default Template",
+ "path": "templates/default.html.ftl",
+ "title": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Default Template"
+ }
+ ]
+ }
+ }
+ },
+ "login-form": {
+ "description": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Login Form"
+ }
+ ]
+ }
+ },
+ "name": "Login Form",
+ "path": "templates/login/login-form.html.ftl",
+ "title": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Login Form"
+ }
+ ]
+ }
+ }
+ },
+ "login-recover-password": {
+ "description": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Recover lost passwords"
+ }
+ ]
+ }
+ },
+ "name": "login-recover-password",
+ "path": "templates/login/login-recover-password.html.ftl",
+ "title": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Recover password"
+ }
+ ]
+ }
+ }
+ },
+ "login-password-recovered": {
+ "description": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Password recovered"
+ }
+ ]
+ }
+ },
+ "name": "login-password-recovered",
+ "path": "templates/login/login-password-recovered.html.ftl",
+ "title": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Password recovered"
+ }
+ ]
+ }
+ }
+ },
+ "loggedout": {
+ "description": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Logout successful"
+ }
+ ]
+ }
+ },
+ "name": "loggedout",
+ "path": "templates/logout/loggedout.html.ftl",
+ "title": {
+ "values": {
+ "value": [
+ {
+ "lang": "en",
+ "value": "Logout succesful"
+ }
+ ]
+ }
+ }
+ }
+ },
+
+ "views": {
+ "default": {
+ "default": "default",
+ "@default": "default"
+ },
+ "login": {
+ "loginForm": "login-form",
+ "passwordRecovered": "login-password-recovered",
+ "recoverPassword": "login-recover-password"
+ },
+ "logout": {
+ "loggedout": "loggedout"
+ }
+ }
+}
diff --git a/ccm-cms/src/main/java/org/librecms/pages/PageManager.java b/ccm-cms/src/main/java/org/librecms/pages/PageManager.java
index 1da892bec..f392649dd 100644
--- a/ccm-cms/src/main/java/org/librecms/pages/PageManager.java
+++ b/ccm-cms/src/main/java/org/librecms/pages/PageManager.java
@@ -72,7 +72,9 @@ public class PageManager {
category.getObjectId())));
if (forCategory.getParentCategory() == null) {
- return new Page();
+ final Page defaultPage = new Page();
+ defaultPage.setDisplayName("@default");
+ return defaultPage;
} else {
return findPageForCategory(forCategory.getParentCategory());
}
diff --git a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java
index 12e8109cc..146480517 100644
--- a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java
+++ b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java
@@ -163,6 +163,7 @@ import javax.ws.rs.core.UriInfo;
*/
@Controller
@RequestScoped
+@Path("/")
public class PagesController {
@Inject
diff --git a/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java b/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java
index d57848a7e..5628eff4c 100644
--- a/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java
+++ b/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java
@@ -109,10 +109,12 @@ public class ThemesMvc {
viewTemplateName = views.get(view);
} else {
final Map defaultAppViews = manifest
- .getViewsOfApplication(application);
- if (defaultAppViews.containsKey("default")) {
+ .getViewsOfApplication("default");
+ if (defaultAppViews.containsKey(view)) {
+ viewTemplateName = defaultAppViews.get(view);
+ } else if(defaultAppViews.containsKey("default")) {
viewTemplateName = defaultAppViews.get("default");
- } else {
+ } else {
throw new WebApplicationException(
String.format(
"Theme \"%s\" does not provide a template for view "
diff --git a/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json b/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json
index 935946ed8..2d5438706 100644
--- a/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json
+++ b/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json
@@ -17,7 +17,7 @@
}
},
"name": "Category Page",
- "path": "categoryPage.html.ftl",
+ "path": "category-page.html.ftl",
"title": {
"values": {
"value": [
@@ -128,7 +128,8 @@
},
"views": {
"default": {
- "default": "category-page"
+ "default": "category-page",
+ "@default": "category-page"
},
"login": {
"loginForm": "login-form",